前言

国内的Android大部分应用不重视页面的简洁,而且业务逻辑是越攒越多,最终成为一个庞然大物,这个趋势必然不会在意界面的炫酷,但是今天我浅记一下炫酷之动画,Android自3.0以前只有逐帧动画和补间动画,在3.0以后新增了ObjectAnimator(属性动画),在5.0以后又新增了一系列好看的MD风格动画,当然期间不缺乏一些好用的非官方动画框架譬如nineoldandroids,但是由于接下来的出场率不高暂且不谈,接下来我们当简谈下列举的动画,在开谈前还得郑重的提醒句,代码中动态创建的动画一定要注意退出,否则动画所造成的内存泄漏比Bitmap还can忍,它貌似会持续增高。
工具:AS 2.3.1 编译版本:api 25 构建版本:gradle2.3.1


  • 逐帧动画(Frame Animation)
  • 补间动画(Tween Animation)
  • 属性动画(Property Animation ) 3.0后新增
  • MateriaDesign
    1.Touch feedback(触摸反馈)
    2.Reveal effect(揭露效果)
    3.Activity transitions(转场动画实在有很多,最出名的莫属共享元素)
    4.Curved motion(曲线运动)
    5.View state changes (视图状态改变)
    6.Animate Vector Drawables(可绘矢量动画)
  • Lottie(多端支持的未来方向动画)
逐帧动画(Frame Animation)

逐帧动画其实学过Flash的同学绝对不陌生,我们对每一帧设置一个动作,然后连贯的播放起来,这里在Android也是可以这么理解的,做法很简单,平时我们只需要找美工要一个动作的几张分解图,然后XXX就好了,下面来一发例子。


gif5新文件.gif

首先呢我们就先找一些图片这种东西不是稀缺货,就像下面这个,共有12张。


逐帧动画图片.png
代码怎么写呢?
第一步:我们在xml静态文件中配置这些东西,下面的注释很重要、很重要、很重要我说三遍。
<?xml version="1.0" encoding="utf-8"?>                                                    

第二步:既然是动画就需要动那就那啥。。。需要播放出来,我实际操作在onCreate周期方法中

ImageView imgView = (ImageView) findViewById(R.id.img);AnimationDrawable animDrawable = (AnimationDrawable) getResources().getDrawable(R.drawable.frame_animation);animDrawable.setOneShot(false);imgView.setBackground(animDrawable); animDrawable.start();

这里需要注意的就是有博客说此处可能会遇到一个bug,就是控件只显示第一帧,据说是Window对象未初始化完成,无法添加动画载体控件的对象所致,这我无法辨别真假,暂且相信为一个低概率事件,出现时就把我上面操作动画的代码放到onWindowFocusChanged系统方法里面吧,反正我是遇到只显示第一帧,不过只是因为没有animDrawable.start();这里还得鄙视一下那些没有在onDestroy或者在onPuse等周期方法中销毁动画的人,始乱终弃,动画所造成的内存泄漏是你承担不起的,不起的,起的,嘀嘀嘀嘀嘀嘀嘀。

if(animDrawable.isRunning()){            animDrawable.stop();        }
水波纹(触摸反馈)

参考例子别忘了这个http://blog.csdn.net/u012209506/article/details/72833936

共享元素动画 http://blog.sina.com.cn/s/blog_7452896e0102vdko.html(可做参考写)

共享元素这个东西真的很炫酷,这里不做详细探究,只记用法

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(MailDetailsActivity.this, view, "look");                startActivity(intent,options.toBundle());

目标控件加上android:transitionName="look"即可完成转场动画
2者不可缺一

未完,待补充...

更多相关文章

  1. Android常见abd指令集
  2. Android(安卓)Facebook-Rebound弹性动画
  3. 自定义View框架完全解析
  4. Android(安卓)自定义属性研究
  5. Android(安卓)动画分析之翻转效果
  6. android使用AttributeSet自定义控件
  7. Android翻页效果原理实现之翻页的尝试
  8. android 资源文件的使用说明
  9. 利用9-Patch PNG来实现ListView的圆角显示

随机推荐

  1. 详解Navicat远程连接mysql很慢
  2. Navicat Premium操作MySQL数据库(执行sql
  3. Navicat Premiun远程连接MySQL报错10038
  4. 详解mysql中explain的type
  5. 浅析MysQL B-Tree 索引
  6. MySQL编码不一致可能引起的一些问题
  7. 浅析MySQL的WriteSet并行复制
  8. MySQL8.0设置远程访问权限的方法
  9. MySQL 如何连接对应的客户端进程
  10. Navicat连接虚拟机mysql常见错误问题及解