第7章 动画

动画这一章内容比较少,而且之前看的也比较多了。简单总结一下:

7.1 动画类型

7.1.1 View动画

View动画主要分为四种,平移TranslateAnimation、旋转RotateAnimation、缩放ScaleAnimation、透明度AlphaAnimation。这几种动画都是很常见很基本的,就不赘述了。
另外还有帧动画,也就是若干图片一帧帧连续播放,比如我们的开机图片就是帧动画。

7.1.2 View动画的特殊场景

  • LayoutAnimation:ViewGroup的子View的入场动画
  • Activity切换动画:在startActivity()方法或者finish()之后,调用overridePendingTransition(int, int)方法

7.1.3 属性动画

属性动画可以对任何对象使用,包括但不限于View。只要一个对象包含有get和set方法的属性,那么就可以对他使用属性动画。
比如我们写了这么一个类:

public class AnimatorSample {

    private float mFloat;

    public static void test() {
        AnimatorSample sample = new AnimatorSample();
        Animator animator = ObjectAnimator.ofFloat(sample, "float", 0, 1);
        animator.setDuration(1000);
        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                float f = sample.getFloat();
                System.out.println("float = " + f);
                if (f > 0.99999) {
                    timer.cancel();
                }
            }
        };
        timer.schedule(task, 0, 50);
        animator.start();
    }

    public float getFloat() {
        return mFloat;
    }

    public void setFloat(float mFloat) {
        this.mFloat = mFloat;
    }
}

并调用他的test方法,我们会发现,这个AnimatorSample对象的mFloat从0增加到了1。


animator作用对象

可以看到,Animator的作用对象可以是任何对象。通过传入属性名,经过反射调用这个属性的getter和setter方法来进行取值和赋值。

7.1.4 揭露动画

在API21中,加入了揭露动画。通过调用ViewAnimationUtils.createCircularReveal()获取到一个Animator对象,其使用方式和普通Animator相同。

reveal animation.gif

7.2 使用动画的注意事项

  1. 帧动画的OOM
    使用帧动画的时候,如果图片较多、较大的时候,容易出现OOM。所以在平时开发中,尽量避免使用帧动画。

  2. 内存泄漏
    属性动画如果设置了无限循环,在退出界面的时候需要停止,否则将出现内存泄漏。

  3. 动画x点击事件
    在View执行TranslateAnimation之后,新位置点击View并不会触发点击事件,而在老位置点击可以触发View的点击事件。使用属性动画避免这种情况,触发点击事件的区域为新位置。
    造成这种区别的,是Animation并没有改变View本身的属性,而只是视觉效果;而属性动画是改变了View本身的属性值的。

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

推荐阅读更多精彩内容

  • Android动画可以分3种:View动画,帧动画和属性动画;属性动画为API11的新特性,在低版本是无法直接使用...
    HuDP阅读 1,958评论 0 22
  • 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让全面说说Android的动画,所以今...
    未聞椛洺阅读 2,777评论 0 10
  • 【Android 动画】 动画分类补间动画(Tween动画)帧动画(Frame 动画)属性动画(Property ...
    Rtia阅读 6,288评论 1 38
  • 一: 传统 View 动画(Tween/Frame) 1.1 Tween 动画 主要有 4 中:缩放、平移、渐变、...
    dfg_fly阅读 771评论 1 2
  • 动画基础概念 动画分类 Android 中动画分为两种,一种是 Tween 动画、还有一种是 Frame 动画。 ...
    Rtia阅读 1,277评论 0 6