前言

上一篇博客Android Animation动画详解(一): 补间动画 我已经为大家介绍了Android补间动画的四种形式,相信读过该博客的兄弟们一起都了解了。如果你还不了解,那点链接过去研读一番,然后再过来跟着我一起学习如何把简单的动画效果组合在一起,做出比较酷炫的动画特效吧。

一、 动画的续播

如题,大家想想,如果一个页面上包含了许多动画,这些动画要求按顺序播放,即一个动画播放完成后,继续播放另一个动画,使得这些动画具有连贯性。那该如何实现呢? 有开发经验或者是逻辑思维的人肯定会想,对动画进行监听啊,如果这个动画播放完了,再去播放另一个动画不就好了。

Congratulations, 你和我想的是一样一样的。

我们看下通过这种动画播放监听如何去做:

 private void continueAnim(){// 先加载第一个动画Animation translate = AnimationUtils.loadAnimation(getActivity(), R.anim.translate_animation);// 在加载第二个动画final Animation scale = AnimationUtils.loadAnimation(getActivity(), R.anim.scale_animation);// 接下来,我们队第一个动画进行监听,当它播放完成后,我们播放第二个动画translate.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {imgView.startAnimation(scale);}@Overridepublic void onAnimationRepeat(Animation animation) {}});imgView.startAnimation(translate);}

注释我已经写得挺详细了,可以说,这种方法so easy,没啥可说的。

除了上面介绍的使用监听器监听动画播放结束之外,还有一个更easy方法,也是我们优先推荐使用的,那就是Animation Set。

这里,我们要引入一个动画的属性:startOffset。 如何去使用呢?看下定义动画的代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:fillAfter="true"android:fillEnabled="true"><alphaandroid:fromAlpha="0"android:toAlpha="1"android:duration="3000"/><translateandroid:duration="1000"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="100"android:toYDelta="100"android:startOffset="3000"/>
</set>

仔细看下translate定义的动画,它其中就有一个属性startOffset,这个属性的值,其实就是alpha动画的duration的值,他的意思是,延迟三秒后播放,其实也就是第一个alpha动画播放完成后再播放。

Animation continueAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.continue_animation);
imgView.startAnimation(continueAnim);

好啦,写到这,让我们看下运行的效果吧:

二、 动画的重播

    重播动画,故名思议,就是动画重复播放。大家看下上面那个gif的动态图,其实就是重复播放动画。那Android如何重复播放动画呢?

其实very easy,因为Android本身为定义动画提供了两个属性repeatCount和repeatMode,只要为你的动画设置上这两个属性,那就ok了!

为了方便记忆,让我们稍微看下代码吧:

    <translateandroid:duration="1000"android:fromXDelta="0"android:fromYDelta="0"android:toXDelta="100"android:toYDelta="100"android:repeatCount="5"android:repeatMode="restart"/>

这里我们指定了 repeatCount为5,则动画要播放5次,repeatMode为“restart”,则动画每次都是重复播放。repeatMode还有个取值“reverse”,这是指让动画倒叙播放。 看下效果。

三、 Activity的切换动画

说道Activity切换动画,我想大家肯定都不陌生,比如你玩淘宝、美团啥的,你会发现它们的页面切换都是从右向左滑动进入的,这其实就是Activity切换动画的应用。或许大家初始会觉得挺难,但我要告诉你的是,其实这玩意真简单,如果你已经会了如何定义动画(特指补间动画),那么你只要再理解下一个方法——overridePendingTransition即可。

先让我们一起看下这个方法的定义:

/*** @param enterAnim A resource ID of the animation resource to use for* the incoming activity.  Use 0 for no animation.* @param exitAnim A resource ID of the animation resource to use for* the outgoing activity.  Use 0 for no animation.*/public void overridePendingTransition(int enterAnim, int exitAnim) {try {ActivityManagerNative.getDefault().overridePendingTransition(mToken, getPackageName(), enterAnim, exitAnim);} catch (RemoteException e) {}}

第一个参数enterAnim就是说新的要启动的Activity进入时的动画,第二个参数exitAnim,说的其实是原先的Activity退出时的动画效果。

接下来让我们定义两个动画资源:fade_in.xml和hold_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/accelerate_interpolator"><alphaandroid:fromAlpha="0.2"android:toAlpha="1.0"android:duration="1000"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"android:interpolator="@android:anim/accelerate_interpolator"><translateandroid:fromXDelta="0%p"android:toXDelta="100%p"android:duration="1000"/>
</set>

定义动画结束后,那我们只需要在启动新Activity或者结束Activity时,复写 overridePendingTransition方法,并传入动画就好啦:

Intent intent = new Intent(getActivity(),SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.fade_in,R.anim.hold_out);

或者是:

public void back(View view){finish();overridePendingTransition(R.anim.fade_in,R.anim.hold_out);
}

看下效果吧:

有没有被惊叹道,原来就这么easy啊! 赶快自己也动手试下吧。

Follow Me:

其实Android简单的动画就这么些个,复杂的动画无非也是把这些动画整合在一起使用而已,大家遇到复杂的动画不要太慌,只要分析清楚它的实现原理,一步步的来解锁,都是可以搞定的啦。

之后,我会再写两篇博客,介绍我在开发过程中使用过的两次动画,当然,并不是很难的那种,只是分享经验而已,敬请期待,欢迎指点。

源码下载地址(免费):http://download.csdn.net/detail/zuiwuyuan/9047739

Android Animation动画详解(二): 组合动画特效相关推荐

  1. android动画详解二 属性动画原理

    property动画是一个强大的框架,它几乎能使你动画任何东西.你可以定义一个动画来改变对象的任何属性,不论其是否被绘制于屏幕之上.一个属性动画在一定时间内多次改变一个属性(对象的一个字段)的值.要动 ...

  2. Android openGl开发详解(二)

    https://zhuanlan.zhihu.com/p/35192609 Android openGl开发详解(二)--通过SurfaceView,TextureView,GlSurfaceView ...

  3. 全志 android 编译,全志Android SDK编译详解(二)

    注意要确定安装了jdk) 第一步: cd  lichee; ./build.sh  -p sun5i_elite -k 3.0  (apt-get install uboot-mkimage需要安装m ...

  4. 补间动画详解五 缩放动画ScaleAnimation

    ScaleAnimation是尺寸变化动画的类,控制View的尺寸变化. ScaleAnimation类官方文档: https://developer.android.com/reference/an ...

  5. Android openGl开发详解(二)——通过SurfaceView,TextureView,GlSurfaceView显示相机预览(附Demo)

    最近公司在做自定义相机这一块,之前使用的是第三方,后来需求变更,第三方不支持添加动态贴纸,所以只能自己扩展.当然网上有很多例子,但是关于添加动态贴纸的例子几乎找不到,反正我是没找到(欲哭无泪).当然, ...

  6. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  7. Android 虚拟分区详解(二) 虚拟分区布局

    文章目录 0. 导读 1. Android 传统 A/B 分区和动态分区布局 2. Android 虚拟分区布局 3. 虚拟分区的思考 2.1 分区只有一套,如何实现 A/B 系统特性? 2.2 部分 ...

  8. Android的三种动画详解(帧动画、View动画、属性动画)

    Android的动画分为了三种, 分别是 帧动画.View动画.属性动画. 1.帧动画 帧动画就是顺序播放一组预先定义好的图片,就类似于我们观看视频,就是一张一张的图片连续播放. 帧动画的使用很简单, ...

  9. 骨骼动画详解 和 帧动画

     骨骼动画 vs. 精灵表(sprite sheets) 创建动画又快又简单的方法是使用"精灵表"(sprite sheets).当你意识到游戏需要大量动画,内存消耗会涨上来, ...

  10. iOS动画详解(学习动画看这一篇就够了)

    2019独角兽企业重金招聘Python工程师标准>>> 原文出处:wu大维 动效设计一直是iOS平台的优势,良好的动效设计可以很好地提升用户体验.而动画则是动效的基础支撑.本动画将从 ...

最新文章

  1. 今日工作总结及计划: 2022-02-14
  2. shell echo 换行 不换行 打印换行
  3. 李宏毅深度学习——Tips for Deep Learning
  4. Tomcat8.0.11优化相关
  5. centOS安装Ftp
  6. javascript兼容性:IE6/7关闭浏览器操作
  7. 复杂性思维 中文第二版 翻译完成
  8. 报道称奈雪的茶通过港交所聆讯 回应:以公司经监管机构批准的公告为准
  9. 2019 互联网大事记:谁是最后的赢家?
  10. android恢复出厂设置的流程
  11. Oh-My-Zsh 下远程ssh的乱码问题
  12. 某城郊110kV降压变电站监控系统设计
  13. 深入解读5G关键技术
  14. 【eos系列】智能合约 私链激活 基本操作
  15. Unable to read entire header; 80 bytes read; expected 512 bytes
  16. 免费10分钟邮箱上线啦~~
  17. pc端页面右侧滑动样式修改
  18. 13、Kanzi插件——通过Kanzi Engine插件创建自定义节点+代码解析
  19. 初识中央处理器CPU
  20. 关于QT源代码文件的归类

热门文章

  1. jenkins安装Publish Over SSH
  2. 16个优秀网站设计网站
  3. linux下源代码安装f90,linux下编译fortran linux安装gfortran
  4. 计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码
  5. 产品经理交互设计师必备的已分类的《产品Axure原型库》
  6. 【科学文献计量】中英文文献标题及摘要可读性指标分析与可视化
  7. 编程规范 --- 可读性
  8. [转载]疯狂的程序员(1)
  9. 搭建直播平台什么样的服务器最合适?
  10. 运动无线蓝牙耳机哪款好、运动无线蓝牙耳机推荐