Android学习笔记 属性动画 推荐新手向学习视频:B站https://www.bilibili.com/video/av38409964点我传送 属性动画 属性动画在移动结束后,可以点击移动后的位置,因为其属性改变了。但是补间动画,点击移动后的位置无效,点击原来的地方才有效,因为属性没改变。
- ValueAnimator
- ObjectAnimator.ofFloat()
- 动画类型供参考: translationX translationY alpha rotation rotationX
- activity_object_anim
- 效果
文章图片
- 【Android|Android学习笔记(Android Studio)属性动画】ObjectAnimActivity
package com.ylw.helloworld; import androidx.appcompat.app.AppCompatActivity; import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.os.Bundle; import android.util.Log; import android.widget.TextView; public class ObjectAnimActivity extends AppCompatActivity {private TextView tvTest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_object_anim); tvTest = findViewById(R.id.tv); //较为简单的动画 //在2秒的时间里以rotationY为轴沿Y轴旋转500度 //tvTest.animate().rotationYBy(500).setDuration(2000).start(); //在2秒的时间里沿Y轴平移500个值,也可以为-值,-值为向上 //tvTest.animate().translationYBy(500).setDuration(2000).start(); //在2秒的时间里沿Y轴平移到500个值的位置。 //tvTest.animate().translationY(500).setDuration(2000).start(); //在2秒中内透明度变为0 // tvTest.animate().alpha(0).setDuration(2000).start(); //控制值的变化 //ValueAnimator valueAnimator = ValueAnimator.ofInt(0,100); //valueAnimator.setDuration(2000); ////添加动画监听器 //valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { //@Override //public void onAnimationUpdate(ValueAnimator animation) { ////valueAnimator实际的值 //Log.d("aaaa",animation.getAnimatedValue()+""); ////动画的进度0-1 //Log.d("aaaa",animation.getAnimatedFraction()+""); //} //}); //valueAnimator.start(); //执行动画的对象,动画的类型,移动的值(可以设置多个) ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(tvTest,"translationY",0,500,400,600,300,800); objectAnimator.setDuration(2000); //添加动画监听器 objectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { // } }); objectAnimator.start(); } }
- 效果
文章图片