Android 属性动画

xiaoxiao2021-02-28  67

public class MainActivity extends AppCompatActivity { private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 加载布局 setContentView(R.layout.activity_main); // 作用:执行动画 iv = (ImageView) findViewById(R.id.iv); //给iv设置一个监听事件 iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(getApplication(), "你点不到我", Toast.LENGTH_SHORT).show(); } }); } // 位移动画 public void translate(View v) { // 创建属性动画 /** * target 执行的目标,谁执行动画 * propertyName 属性名字,The name of the property being animated. * float...values 可变参数 第一个参数为图标瞬移到哪个位置,但源位置不变,剩下的参数就是在源坐标的基础上平移。 */ ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "translationX", 200, 200, 100, 200, 100); objectAnimator.setDuration(2000); objectAnimator.start(); // 开始动画 } // 缩放动画 public void scale(View v) { /** * target 执行的目标,谁知性动画 * propertyName 属性名字,scaleX就是X的尺寸,横着改。如果是scaleY,就竖着操作。 * float...values 可变参数 从0.1f的大小开始,X轴变2,1,2倍 */ ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "scaleX", 0.1f, 2, 1, 2); objectAnimator.setDuration(2000); objectAnimator.start(); // 开始动画 } // 实现透明的效果 public void alpha(View v) { ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "alpha", 0, 0.5f, 0, 1, 0, 1); objectAnimator.setDuration(2000); objectAnimator.start(); } // 实现旋转的效果 /** * * rotation 旋转,rotationY 沿着Y轴旋转 */ public void rotate(View v) { // ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "rotation", 0, 180, 90, 360); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "rotationY", 0, 180, 90, 360); objectAnimator.setDuration(2000); objectAnimator.start(); } // 一起飞 public void fly(View v) { AnimatorSet animatorSet = new AnimatorSet(); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv, "translationX", 200, 200, 100, 200, 100); ObjectAnimator objectAnimator2 = ObjectAnimator.ofFloat(iv, "scaleX", 0.1f, 2, 1, 2); ObjectAnimator objectAnimator3 = ObjectAnimator.ofFloat(iv, "alpha", 0, 0.5f, 0, 1, 0, 1); ObjectAnimator objectAnimator4 = ObjectAnimator.ofFloat(iv, "rotationY", 0, 180, 90, 360); animatorSet.setDuration(2000); animatorSet.setTarget(iv); // 往集合中添加动画 挨个飞 // animatorSet.playSequentially(objectAnimator, objectAnimator2, objectAnimator3, objectAnimator4); // 一起飞 animatorSet.playTogether(objectAnimator, objectAnimator2 , objectAnimator3, objectAnimator4); animatorSet.start(); } // 使用xml的方式创建属性动画 public void playXml(View v) { ObjectAnimator oa = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.animator); // 设置执行目标 oa.setTarget(iv); oa.start(); // 开始执行 } }

在res目录下创建animator文件夹,在文件夹内创建 animator.xml文件

<?xml version="1.0" encoding="utf-8"?> <objectAnimator android:propertyName="translationX" android:duration="2000" android:valueFrom="10" android:valueTo="100" xmlns:android="http://schemas.android.com/apk/res/android" />

转载请注明原文地址: https://www.6miu.com/read-36181.html

最新回复(0)