21. 属性动画
21. 属性动画
21.1 ValueAnimator类
改变值
package com.dingjiaxiong.myshuxingdonghua;
import androidx.appcompat.app.AppCompatActivity;
import android.animation.ValueAnimator;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 1f);
//设置周期
valueAnimator.setDuration(2000);
//设置更新监听
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
//打印当前值
Log.e("dingjiaxiong", "onAnimationUpdate: " + value);
}
});
//启动动画
valueAnimator.start();
}
}
运行
21.2 ObjectAnimator类
给hello world TextView加上id
TextView textView = findViewById(R.id.tv);
//让TextView的透明度,从完全透明到不透明
ObjectAnimator objectAnimator = (ObjectAnimator) ObjectAnimator.ofFloat(textView,"alpha",0f,1f);
objectAnimator.setDuration(4000);
objectAnimator.start();
运行
只要类中存在set和get方法,就可以用这个实现变化
【小写】
21.3 监听器
objectAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
//动画开始时调用
}
@Override
public void onAnimationEnd(Animator animator) {
//动画结束时调用
}
@Override
public void onAnimationCancel(Animator animator) {
//动画被取消时调用
}
@Override
public void onAnimationRepeat(Animator animator) {
//动画重复执行时调用
}
});
适配器方式
选一个方法
就可以实现只用一个,就只写一个。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结