本文实例为大家分享了Android属性动画使用的具体代码,供大家参考,具体内容如下
MainActivity.java
/*
属性动画的特点:动画效果会改变控件的位置.且开启动画的是动画对象,而不是控件对象.
只有旋转的属性动画是经常用的,注意参数.
注意:这些方法都是安卓在3.0以后出现的新特性,所以要把AndroidManifest. 里的android:minSdkVersion值修改为11以上
*/
//注释后面有222的暂时不用管.
public class MainActivity extends AppCompatActivity implements View. Listener {
private ImageButton imageView;
private Button alpha_bt;
private Button rotationY_bt;
private Button scaleX_bt;
private Button translationX_bt;
private Button AnimatorSet_bt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 对控件进行初始化
init();
// 此处用的是 的形式.引用在 里的属性动画资源. AnimatorInflater.loadAnimator(上下文,R.animator..)222
Animator animator = AnimatorInflater.loadAnimator(this, R.animator. animator);
// 把要做动画控件对象放进去.Animator.setTarget(View对象);222
animator.setTarget(imageView);
// 开启动画.Animator.start.222
animator.start();
}
// 对于控件进行初始化
private void init() {
//找到ImageView控件对象
imageView = (ImageButton) findViewById(R.id.animation_iv);
//找到Button控件对象.
alpha_bt = (Button) findViewById(R.id.alpha_bt);
rotationY_bt = (Button) findViewById(R.id.rotationY_bt);
scaleX_bt = (Button) findViewById(R.id.scaleX_bt);
translationX_bt = (Button) findViewById(R.id.translationY_bt);
AnimatorSet_bt = (Button) findViewById(R.id.AnimatorSet_bt);
//为button设置点击事件
alpha_bt.set Listener(this);
rotationY_bt.set Listener(this);
scaleX_bt.set Listener(this);
translationX_bt.set Listener(this);
AnimatorSet_bt.set Listener(this);
}
/**
* 根据点击事件类型.调用控件做属性动画的
*
* @param view
*/
@Override
public void (View view) {
switch (view.getId()) {
case R.id.alpha_bt:
//做透明动画,参数1:View,代表你要修改那个控件的属性. 参数2:propertyName代表实现什么样子的动画:\"alpha\",String类型.
//参数3:float... values,控件修改的参数,new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f}
Animator alpha = Animator.ofFloat(imageView, \"alpha\", new float[]{0.0f, 0.2f, 0.4f, 0.6f, 0.8f, 1.0f});
//设置动画执行时长.setDuration
alpha.setDuration(2000);
//设置动画执行的模式setRepeatMode,参数用 Animator引用.
alpha.setRepeatMode( Animator.RESTART);
//设置动画执行的次数.setRepeatCount
alpha.setRepeatCount(1);
//使用 Animator对象开启动画.
alpha.start();
break;
case R.id.rotationY_bt:
//做旋转动画,\"rotationY\".rotationX,rotation new float[]{90f, 180f, 270f, 360f}
Animator rotationY = Animator.ofFloat(imageView, \"rotationY\", new float[]{90f, 180f, 270f, 360f});
rotationY.setDuration(2000);
rotationY.setRepeatMode( Animator.RESTART);
rotationY.setRepeatCount(1);
rotationY.start();
break;
case R.id.scaleX_bt:
//做缩放动画,scaleX,scaleY new float[]{1f, 2f, 3f, 4f, 5f, 6f,1f}
Animator scaleX = Animator.ofFloat(imageView, \"scaleX\", new float[]{1f, 2f, 3f, 4f, 5f, 6f, 1f});
scaleX.setDuration(2000);
scaleX.setRepeatMode( Animator.RESTART);
scaleX.setRepeatCount(1);
scaleX.start();
break;
case R.id.translationY_bt:
//做平移动画,translationY,translationX new float[]{10f, 20f, 30f, 40f, 60f, 80f}
Animator translationY = Animator.ofFloat(imageView, \"translationY\", new float[]{10f, 20f, 30f, 40f, 60f, 80f});
translationY.setDuration(2000);
translationY.setRepeatMode( Animator.RESTART);
translationY.setRepeatCount(1);
translationY.start();
//做动画集合AnimatorSet,分别创建两个动画对象.注意playTogether(动画对象...)和playSequentially的区别.最后开启动画.start
case R.id.AnimatorSet_bt:
AnimatorSet set = new AnimatorSet();
Animator oa = Animator.ofFloat(imageView, \"translationX\", new float[]{10f, 20f, 30f, 40f, 60f, 80f});
oa.setDuration(3000);
Animator oa2 = Animator.ofFloat(imageView, \"translationY\", new float[]{-10f, -20f, -30f, -40f, -60f, -80f});
oa2.setDuration(3000);
set.playTogether(oa, oa2);
set.start();
break;
default:
break;
}
}
}
activity_main.
<LinearLayout ns:android=\"http://schemas.android.com/apk/res/android\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\"
android:orientation=\"vertical\">
<!-- 注意background的属性置为null -->
<Button
android:id=\"@+id/alpha_bt\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"alpha\"/>
<Button
android:id=\"@+id/translationY_bt\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"translationY\"/>
<Button
android:id=\"@+id/scaleX_bt\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"scaleX\"/>
<Button
android:id=\"@+id/rotationY_bt\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"rotationY\"/>
<Button
android:id=\"@+id/AnimatorSet_bt\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"AnimatorSet\"/>
<ImageButton
android: =\"yyyy\"
android:id=\"@+id/animation_iv\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:layout_gravity=\"center\"
android:src=\"@drawable/a8\"
android:background=\"@null\"/>
</LinearLayout>
在res目录下创建animator文件夹在文件夹里创建以下
animator.
< Animator ns:android=\"http://schemas.android.com/apk/res/android\" android:propertyName=\"rotationX\" android:duration=\"3000\" android:repeatCount=\"1\" android:repeatMode=\"reverse\" android:startOffset=\"0\" android:valueFrom=\"360.0\"> </ Animator> <!--注意:在 定义动画类的属性,浮点型小数,直接写小数即可,不用再带f. 提示:控件位移的参照单位在 文件里有所不同,不过更简单,不用再特意去定义参照物属性了,直接是根据值,区分两种方式: 一种是以整个屏幕为参照物,在 文件属性定义值是int%p; 一种以控件自身大小为参照物,在 文件属性定义值是int-->
---------------------
作者:FanRQ_
来源:CSDN
原文:https://blog.csdn.net/FanRQ_/article/details/84072052
版权声明:本文为博主原创文章,转载请附上博文链接!
继续阅读与本文标签相同的文章
上一篇 :
Python中的数字
下一篇 :
为什么程序员要学Python
-
阿里云物联网平台远程配置功能JAVA 示例参考
2026-05-19栏目: 教程
-
从零开始搭建Java开发环境第一篇:Java工程师必备软件大合集
2026-05-19栏目: 教程
-
从服务器网站搭建到选择阿里云
2026-05-19栏目: 教程
-
从零开始搭建Java开发环境第三篇:最新版IDEA常用配置指南,打造你的最酷IDE
2026-05-19栏目: 教程
-
从零开始搭建Java开发环境第四篇:精选IDEA中十大提高开发效率的插件!
2026-05-19栏目: 教程
