Android 动画使用详解(三) 属性动画
动画在Android 开发中经常会被用到,好的动画效果可以达到事半功倍的效果。属性动画点击事件可以随位置到改变而改变
属性动画分类:
- 透明动画 alpha
- 旋转动画 rotation
- 缩放动画 scaleX
- 平移动画 translationX
- 动画集合 AnimatorSet
- 动画监听事件 addListener
- 动画关键类
欢迎关注微信公众号:程序员Android
公众号ID:ProgramAndroid
获取更多信息

微信公众号:ProgramAndroid
我们不是牛逼的程序员,我们只是程序开发中的垫脚石。
我们不发送红包,我们只是红包的搬运工。
1. 透明动画
- alpha
/**
* alpha 透明动画 1.属性动画作用在谁身上 2.属性名称 3.属性的变化范围值 透明值
* **/
ObjectAnimator alphaanimator = ObjectAnimator.ofFloat(mImageView,
"alpha", 0, 1.0f);
alphaanimator.setDuration(4000);
alphaanimator.setRepeatCount(2);
alphaanimator.start();
2. 旋转动画
- rotation
/**
* 旋转动画 rotation
* */
ObjectAnimator rotationanimator = ObjectAnimator.ofFloat(mImageView,
"rotation", 0, 360);
rotationanimator.setDuration(2000);
rotationanimator.setRepeatCount(2);
rotationanimator.setRepeatMode(Animation.RESTART);
rotationanimator.start();
3. 缩放动画
- scaleX
/**
* scaleX 缩放动画
*
* */
ObjectAnimator scaleXanimator = ObjectAnimator.ofFloat(mImageView,
"scaleX", 0, 2);
scaleXanimator.setDuration(2000);
scaleXanimator.setRepeatCount(2);
scaleXanimator.setRepeatMode(Animation.RESTART);
scaleXanimator.start();
4. 平移动画
- translationX
/**
* translationX平移动画
*
* */
ObjectAnimator translationanimator = ObjectAnimator.ofFloat(mImageView,
"translationX", 0, 200f);
translationanimator.setDuration(2000);
translationanimator.setRepeatCount(2);
translationanimator.setRepeatMode(Animation.RESTART);
translationanimator.start();
5. 动画集合
- AnimatorSet
/**
* 动画集合效果 rotation
* */
AnimatorSet animatorSet = new AnimatorSet();
ObjectAnimator animator1 = ObjectAnimator.ofFloat(mImageView, "alpha",
0, 1.0f);
ObjectAnimator animator2 = ObjectAnimator.ofFloat(mImageView,
"translationX", 0, 100f);
ObjectAnimator animator3 = ObjectAnimator.ofFloat(mImageView, "scaleX",
0, 3);
ObjectAnimator animator4 = ObjectAnimator.ofFloat(mImageView,
"rotation", 0, 90);
List<Animator> list = new ArrayList<Animator>();
// 将动画集合添加到list集合中
list.add(animator1);
list.add(animator2);
list.add(animator3);
list.add(animator4);
// 播放集合中的动画
animatorSet.playSequentially(list);
animatorSet.setDuration(2000);
animatorSet.start();
6. 动画监听事件
scaleXanimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
super.onAnimationCancel(animation);
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
}
@Override
public void onAnimationRepeat(Animator animation) {
super.onAnimationRepeat(animation);
}
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
}
@Override
public void onAnimationPause(Animator animation) {
super.onAnimationPause(animation);
}
@Override
public void onAnimationResume(Animator animation) {
super.onAnimationResume(animation);
}
});
7. 动画关键类
属性动画关键类如下:
- ValueAnimator
- ObjectAnimator
-
- ValueAnimator
使用方法如下:
- ValueAnimator
ValueAnimator animation = ValueAnimator.ofFloat(0f, 100f);
animation.setDuration(1000);
animation.start();
-
- ObjectAnimator
使用方法如下:
- ObjectAnimator
ObjectAnimator animation = ObjectAnimator.ofFloat(textView, "translationX", 100f);
animation.setDuration(1000);
animation.start();
至此,属性动画已经完成。


至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

如有侵权,请联系小编,小编对此深感抱歉,届时小编会删除文章,立即停止侵权行为,请您多多包涵。

既然都看到这里,领两个红包在走吧!
以下两个红包每天都可以领取
1.支付宝搜索 522398497,或扫码支付宝红包海报。

支付宝扫一扫,每天领取大红包
2.微信红包,微信扫一扫即可领取红包

微信扫一扫,每天领取微信红包
小礼物走一走,来简书关注我
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!