动画介绍

1. 简介


从这节课开始我们就正式的开始我们的动画部分,其实在android中最常见的动画分为3种,帧动画、补间动画、属性动画。而这3种动画可以说在我们开发过程中是非常常见的,尤其是属性动画,在这里需要说明一点就是,其实绝大部分的动画都可以由属性动画来完成。这个东西算是我们先来埋下一个伏笔,我们会在接下来的几节课程当中来不断的去通过效果、通过示例代码去印证这样的一个观点,那么接下来我们就来看下这几种动画它的含义、它的效果展示等等的这样一些东西。

其实一般在项目开发的过程中,这些动画都是放在一起联合使用的,当然也有单个动画使用的,可能会比较少,具体的可以参照我写的58同城数据加载效果、常见多条目筛选效果,里边所涉及到的动画都是将补间动画、属性动画放在一起混合使用的。

2. 定义


2.1 帧动画

帧动画就是把一个完整的动画效果,分为多张图片,让其持续一张一张的去播放,比如小时候的动画片;
具体使用如下:
1>: 找一些图片放到drawable问价夹下;
2>: 在drawable文件夹下直接创建 anim.xml文件,从drawable中引入图片,然后设置duration时长,oneshot = true表示播放一次,oneshot= false表示循环播放;

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="true" >

    <item
        android:drawable="@drawable/pop1"
        android:duration="100"/>
    <item
        android:drawable="@drawable/pop2"
        android:duration="100"/>
    <item
        android:drawable="@drawable/pop3"
        android:duration="100"/>
    <item
        android:drawable="@drawable/pop4"
        android:duration="100"/>
    <item
        android:drawable="@drawable/pop5"
        android:duration="100"/>

</animation-list>

3>: findviewbyid找到咱们需要把帧动画设置的ImageView的控件;
4>: 通过资源文件 获取 AnimationDrawable实例对象;
5>: 把这个实例对象设置给ImageView的背景即可;

        iv_frame = (ImageView) findViewById(R.id.iv_frame);
        
        // 通过逐帧动画的资源文件获得AnimationDrawable示例
        frameAnim=(AnimationDrawable) getResources().getDrawable(R.drawable.bullet_anim);
        // 把AnimationDrawable设置为ImageView的背景
        iv_frame.setBackgroundDrawable(frameAnim);

或者:

      private AnimationDrawable animationDrawable;  

      img = (ImageView) findViewById(R.id.img);  
      img.setImageResource(R.drawable.anim_loading);  
      animationDrawable = ((AnimationDrawable) img.getDrawable());  
      animationDrawable.start();

2.2 补间动画

补间动画指的是平移(translate动画,即位移)、缩放(scale动画)、旋转(rotate动画)、渐变透明(Alpha),改变的是View的属性

2.3 属性动画 (ObjectAnimator)

其实像绝大部分的加载数据页面之前的动画效果基本都可以认为是属性动画,因为它们基本都可以使用属性动画来实现

可以参照写的58同城数据加载、常见多条目筛选

2.4 - 值动画(VauleAnimator )

有时候我们可能会有这样的需求,就是类似QQ消息拖拽的,把那个数字拖动到一定位置然后松开手,可以发现,那个贝塞尔曲线会有一个回弹的一个效果,那个效果就可以用值动画来实现。

可以参照 贝塞尔曲线 - 让所有的View都可拖动爆炸 中回弹的效果

2.5 视差动画(Parallax Scrolling视差滚动)

效果比如知乎首页的引导页:


图片.png

这张图片是静态的,大家可能分析不出什么东西,我直接给大家来说下效果是怎样的:
手指往左边拖动,可以看到第一个ViewPager的上边的所有图片往左边平移,然后包括它上边的文字一会往左边平移,而且速率可能不太一样,这个是第一个ViewPager的,并且后边的几个ViewPager也会是同样的效果;

可以分析得知,视差动画主要体现在背景的渐变、及内容元素的滚动速率上边,可以给用户很好的视觉及操作上的体验。

可以参照 属性动画 - 酷狗音乐引导页demo

2.6 转场动画

转场动画其实在5.0之前就已经有了,在5.0之前使用的是overridingPendingTransition()来实现一些转场动画效果,不过5.0之后的这种效果更加炫酷,效果如下:

这个是第一张


图片.png

点击第三张会直接往上边弹出这张页面


图片.png

其实还有其他的一些动画,比如视差动画(Parallax Scrolling视差滚动)、转场动画等等的,那么下节课我们就正式的开始我们自定义view之仿58同城效果的实现。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 Core Animation 中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫...
    lltree阅读 664评论 2 6
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,368评论 25 708
  • 我们写的应用程序往往都不是静态的,因为它们需要适应用户的需求以及为执行各种任务而改变状态。 在这些状态之间转换时,...
    sunmumu1222阅读 732评论 0 2
  • 近期,一部印度电影成为了大众口中热议的话题。制作人兼主演的印度巨星阿米尔汗也成了不少少妇的痴迷男神。 这是一部由真...
    金金心阅读 414评论 0 2
  • 我和你的距离很远 我这边的花刚开 你那边的雪还在下 我和你的距离很近 我痴痴的想着你 你也刚好记起了我的微笑 我和...
    花间酒阅读 579评论 2 20