android属性动画替换逐帧动画,Android 动画:逐帧动画,补间动画和属性动画
1.三种动画的介绍
现在 Android 常用的动画有三种: 逐帧动画,补间动画和属性动画;
FrameAnimation(逐帧动画):将多张图片组合起来进行播放,很多 App 的加载动画是采用这种方式(如:美团,去哪儿)。
TweenAnimation(补间动画):补间动画由 Animation 类来实现具体效果,包括平移(TranslateAnimation)、缩放(ScaleAnimation)、旋转(RotateAnimation)、透明度(AlphaAnimation)四个子类,四种变化,但补间动画只是达到了其视觉效果,并不是真正的位置上的变化。(属性动画出来之后,补间动画就不那么常用了)。
PropertyAnimation(属性动画):最为强大的动画,弥补了补间动画的缺点,实现位置+视觉的变化。下面重点讲解属性动画:
动画名称
描述
注释
代码实例
透明度
透明度由0~1表示。
0表示完全透明,
1表示不透明
view:执行动画的View;
"alpha":表示透明动画;
1f:起始透明度;
0f:动画结束后的透明度;
//变为透明,
//动画时间为两秒并开始
ObjectAnimator animator =
ObjectAnimator.ofFloat(view, "alpha", 0f);
animator.setDuration(2000);
animator.start();
旋转
下个度数大于上个度数,
顺时针旋转;
下个度数小于上个度数,
逆时针旋转。
view:执行动画的View;
"rotation":表示旋转动画
0f => 360f ,顺时针;
360f => 0f,逆时针;
//先顺时针,再逆时针,
//动画时间为两秒并开始
ObjectAnimator animator =
ObjectAnimator.ofFloat(view, "rotation", 0f,360f, 0f);
animator.setDuration(2000);
animator.start();
移动
translationX:
下个位置大于上个上个位置时,
向右移动,反之向左移动;
translationY:
下个位置大于上个上个位置时,
向下移动,反之向上移动。
view:执行动画的View;
"translationX":在x轴移动
"translationY":在y轴移动
translationX:
0f=> -300f,向左;
-300f=> 0f,向右。
//先向左移动,再向右移动,
//动画时间为两秒并开始
ObjectAnimator animator =
ObjectAnimator.ofFloat(view, "translationX", 0f, -300f, 0f);
animator.setDuration(2000);
animator.start();
缩放
后面的参数表示倍数,
1f表示原来的大小,以此推类:
2f表示两倍、3f表示三倍
view:执行动画的View;
“scaleX”:沿x轴缩放
"scaleY":沿y轴缩放
//先沿x轴放大两倍,再缩小回去,
//动画时间为两秒并开始
ObjectAnimator animator =
ObjectAnimator.ofFloat(view, "scaleX", 1f, 2f, 1f);
animator.setDuration(2000);
animator.start();
组合动画
类AnimatorSet,
专门来组合这些动画。
after(Animator anim) :
将现有动画插入到传入的动画之后执行
after(long delay) :
将现有动画延迟指定毫秒后执行
before(Animator anim):
将现有动画插入到传入的动画之前执行
with(Animator anim) :
将现有动画和传入的动画同时执行
ObjectAnimator animator1 =
ObjectAnimator.ofFloat(view, "translationX", 600, 0, 0);
ObjectAnimator animator2 =
ObjectAnimator.ofFloat(view, "translationX", 0, -600, -600);
AnimatorSet set = new AnimatorSet();
set.play(animator1).before(animator2);
set.setDuration(3000);
set.start();
2.PropertyAnimation(属性动画)实例
下面是一个类似弹幕的例子,弹幕从最右边划入,滑到中间停留一下,从最左边划出(做 gif 动图不会。。所以先看下截图)
(demo下载地址 https://download..net/download/wuqingsen1/10644093):
首先初始化两个 ObjectAnimator 和一个 AnimatorSet ,其次利用组合动画来实现,代码如下:
public class MainActivity extends AppCompatActivity {
private TextView tv_show;
private AnimatorSet set = new AnimatorSet();
private ObjectAnimator animator1;
private ObjectAnimator animator2;
private LinearLayout ll_login;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_show = findViewById(R.id.tv_show);
ll_login = findViewById(R.id.ll_login);
tv_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ll_login.setVisibility(View.VISIBLE);
//第一个动画 animator1 和第二个动画 animator2
animator1 = ObjectAnimator.ofFloat(ll_login, "translationX", 800, 0, 0);
animator2 = ObjectAnimator.ofFloat(ll_login, "translationX", 0, -800, -800);
//先执行第一个动画,再执行第二个动画
set.play(animator1).before(animator2);
set.setDuration(3000);
set.start();
}
});
}
}
3.FrameAnimation(逐帧动画)实例
下面是三张图片来回切换的例子(做 gif 动图不会。。所以先看下截图)
(demo下载地址为https://download..net/download/wuqingsen1/10644237 ):
建一个名字为 zhuzhen 的 xml 文件,里面内容为:
android:oneshot="false" >
android:drawable="@drawable/img00"
android:duration="200"/>
android:drawable="@drawable/img01"
android:duration="200"/>
android:drawable="@drawable/img02"
android:duration="200"/>
代码中设置:
public class MainActivity extends AppCompatActivity {
private ImageView iv_zhuzhen;
private AnimationDrawable animationDrawable;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_zhuzhen = findViewById(R.id.iv_zhuzhen);
// 把动画资源设置为imageView的背景,也可直接在XML里面设置
iv_zhuzhen.setBackgroundResource(R.drawable.zhuzhen);
animationDrawable = (AnimationDrawable) iv_zhuzhen.getBackground();
if (animationDrawable != null && !animationDrawable.isRunning()) {
animationDrawable.start();//动画开始
}
}
}
更多好内容戳下面:
https://blog..net/wuqingsen1
android属性动画替换逐帧动画,Android 动画:逐帧动画,补间动画和属性动画相关推荐
- Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法
补间(Tween)动画 Android 使用Animation代抽象的动画类,它包括如下几个子类. AlphaAnimation:透明度改变的动画.创建该动画时要指定动画开始时的透明度.结束时的透明度 ...
- android 动画多次使用,Android动画使用(二)——补间(View)动画
1.Android动画简介 1.1 分类 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: Drawable Animation: 这种动画(也叫Fr ...
- 形状补间及路径引导动画
知识点: 一.形状补间动画功能: 1.位置变换: 2.色彩变幻: 3.外形变换. 二.路径引导动画: 必须是动作补间,上一层为引导层,下一层为被引导层. 练习一.跳动的小球 练习二.气泡 转载于:ht ...
- Android逐帧动画和补间动画
本篇博客来看一下Android中的逐帧动画和补间动画. 一.逐帧动画 逐帧动画也叫Drawable Animation. 在Android中实现逐帧动画,就是由设计师给出一系列状态不断变化的图片, 开 ...
- Android动画(帧动画、补间动画、属性动画)讲解
Android动画(帧动画.补间动画.属性动画)讲解 首先我们来看看啥是帧动画.补间动画.属性动画. 介绍: 帧动画:是一种常见的动画形式(Frame By Frame),其原理是在"连续的 ...
- 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet
全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...
- Android开发总结之动画(帧动画+补间动画)
一.概述 动画的概念 动画的概念不同于一般意义上的动画片,动画是一种综合艺术,它是集合了绘画.漫画.电影.数字媒体.摄影.音乐.文学等众多艺术门类于一身的艺术表现形式. 动画的英文有很多表述, ...
- 每日一道面试题(第7期)---Android补间动画与属性动画的区别
零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...
- android 属性动画还原,属性动画和补间动画
动画的分类 今天我们将会探讨动画的学习,Android的动画分成三类 1. Tween Animation(补间动画.视图动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即 ...
- android 属性动画 补间动画,每日一道面试题(第7期)---Android补间动画与属性动画的区别...
零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...
最新文章
- LeetCode实战:买卖股票的最佳时机
- 表 合并字段_多工作表动态合并,其实很简单
- excel2007-分页显示透视表
- Windows保护模式学习笔记(一)—— 段寄存器GDT表
- 如何产生QPSK信号
- 给定三角形 ABC 和一点 P(x,y,z),判断点 P 是否在 ABC 内,给出思路并手写代码
- Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理...
- gulp,grunt,bower,feoman,fis 简单说明
- 这5种员工,千万不能重用
- python学习笔记(二十)初识面向对象
- 2021新媒体内容生态数据报告
- JavaScript游戏开发简介
- 步步为营-17-FileStream-文件加密/解密
- CPU的温度是360的准还是鲁大师的准?
- 用opencv进行图像处理-利用傅里叶变换进行图像的高通滤波和锐化
- anaconda3怎么卸载干净,卸载anaconda3的方法是什么
- ECharts柱状图图形标签间隔显示
- c语言 组合问题,排列组合问题 C语言
- 推荐一个node QQ机器人框架-onebot
- 文章原创度php,度_原创文章_文章吧
热门文章
- matlab没有电力系统模块库,电力系统模块库,power systems blockset,音标,读音,翻译,英文例句,英语词典...
- 【小工具】自定义键盘快捷键切换音频播放设备、快速开关切换静音
- Sql 格式化时间格式为 MM-dd hh:mm
- 软件架构--MVC介绍(垂直应用架构)
- 如何通过本平台发送营销或通知短信?
- Python实现粒子群PSO算法
- 利用Python预测NBA比赛结果
- 手机号中毒不用怕 i春秋发布手机号码解毒计划
- 真·屠龙之术 | 一次SparkSQL性能分析与优化之旅及相关工具小结
- Linux 装机必备工具