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 动画:逐帧动画,补间动画和属性动画相关推荐

  1. Andriod anim 补间(Tween)动画与Interpolator以及setCustomAnimations方法

    补间(Tween)动画 Android 使用Animation代抽象的动画类,它包括如下几个子类. AlphaAnimation:透明度改变的动画.创建该动画时要指定动画开始时的透明度.结束时的透明度 ...

  2. android 动画多次使用,Android动画使用(二)——补间(View)动画

    1.Android动画简介 1.1 分类 Android系统提供了很多丰富的API去实现UI的2D与3D动画,最主要的划分可以分为如下几类: Drawable Animation: 这种动画(也叫Fr ...

  3. 形状补间及路径引导动画

    知识点: 一.形状补间动画功能: 1.位置变换: 2.色彩变幻: 3.外形变换. 二.路径引导动画: 必须是动作补间,上一层为引导层,下一层为被引导层. 练习一.跳动的小球 练习二.气泡 转载于:ht ...

  4. Android逐帧动画和补间动画

    本篇博客来看一下Android中的逐帧动画和补间动画. 一.逐帧动画 逐帧动画也叫Drawable Animation. 在Android中实现逐帧动画,就是由设计师给出一系列状态不断变化的图片, 开 ...

  5. Android动画(帧动画、补间动画、属性动画)讲解

    Android动画(帧动画.补间动画.属性动画)讲解 首先我们来看看啥是帧动画.补间动画.属性动画. 介绍: 帧动画:是一种常见的动画形式(Frame By Frame),其原理是在"连续的 ...

  6. 安卓动画全解:补间动画(视图动画)、布局动画、属性动画、逐帧动画。动画Animation属性、Alpha属性、Scale属性、Translate属性、Rotate属性,动画集AnimationSet

    全栈工程师开发手册 (作者:栾鹏) 安卓教程全解 安卓动画全解:补间动画(视图动画).布局动画.属性动画.逐帧动画. 主要内容包含:动画Animation属性.Alpha属性.Scale属性.Tran ...

  7. Android开发总结之动画(帧动画+补间动画)

    一.概述 动画的概念   动画的概念不同于一般意义上的动画片,动画是一种综合艺术,它是集合了绘画.漫画.电影.数字媒体.摄影.音乐.文学等众多艺术门类于一身的艺术表现形式.   动画的英文有很多表述, ...

  8. 每日一道面试题(第7期)---Android补间动画与属性动画的区别

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

  9. android 属性动画还原,属性动画和补间动画

    动画的分类 今天我们将会探讨动画的学习,Android的动画分成三类 1. Tween Animation(补间动画.视图动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生的动画效果,即 ...

  10. android 属性动画 补间动画,每日一道面试题(第7期)---Android补间动画与属性动画的区别...

    零零碎碎的东西总是记不长久,仅仅学习别人的文章也只是他人咀嚼后留下的残渣.无意中发现了这个每日一道面试题,想了想如果只是简单地去思考,那么不仅会收效甚微,甚至难一点的题目自己可能都懒得去想,坚持不下来 ...

最新文章

  1. LeetCode实战:买卖股票的最佳时机
  2. 表 合并字段_多工作表动态合并,其实很简单
  3. excel2007-分页显示透视表
  4. Windows保护模式学习笔记(一)—— 段寄存器GDT表
  5. 如何产生QPSK信号
  6. 给定三角形 ABC 和一点 P(x,y,z),判断点 P 是否在 ABC 内,给出思路并手写代码
  7. Quick-Cocos2d-x初学者游戏教程(二) -------------------- Quick内部的代码结构及相应的原理...
  8. gulp,grunt,bower,feoman,fis 简单说明
  9. 这5种员工,千万不能重用
  10. python学习笔记(二十)初识面向对象
  11. 2021新媒体内容生态数据报告
  12. JavaScript游戏开发简介
  13. 步步为营-17-FileStream-文件加密/解密
  14. CPU的温度是360的准还是鲁大师的准?
  15. 用opencv进行图像处理-利用傅里叶变换进行图像的高通滤波和锐化
  16. anaconda3怎么卸载干净,卸载anaconda3的方法是什么
  17. ECharts柱状图图形标签间隔显示
  18. c语言 组合问题,排列组合问题 C语言
  19. 推荐一个node QQ机器人框架-onebot
  20. 文章原创度php,度_原创文章_文章吧

热门文章

  1. matlab没有电力系统模块库,电力系统模块库,power systems blockset,音标,读音,翻译,英文例句,英语词典...
  2. 【小工具】自定义键盘快捷键切换音频播放设备、快速开关切换静音
  3. Sql 格式化时间格式为 MM-dd hh:mm
  4. 软件架构--MVC介绍(垂直应用架构)
  5. 如何通过本平台发送营销或通知短信?
  6. Python实现粒子群PSO算法
  7. 利用Python预测NBA比赛结果
  8. 手机号中毒不用怕 i春秋发布手机号码解毒计划
  9. 真·屠龙之术 | 一次SparkSQL性能分析与优化之旅及相关工具小结
  10. Linux 装机必备工具