Android 动画

本文详细介绍了Android系统中的动画,包括View动画和属性动画。View动画只能用于View,提供了AlphaAnimation、RotateAnimation等四种类型。属性动画自Android 3.0开始引入,可对任意对象的属性进行动画,需要满足特定条件才能实现。文章还讨论了时间插值器和类型估值器的重要角色,以及使用动画时应注意的内存、兼容性等问题。
摘要由CSDN通过智能技术生成

概述

动画的本质,其实就是把内容的两个状态平滑的过度,而不是直接切换。
示例:

    /**
     * 通过不断平移
     * 来实现动画效果
     */
    float newTranslationX = 0;
    public void translationX(View view){
   
        Runnable runnable = new Runnable() {
   
            @Override
            public void run() {
   
                // 每次向右移动5像素,100次就是500像素。
                newTranslationX += 5 ;
                img.setTranslationX(newTranslationX);
            }
        };
        for (int i =0;i<100;i++){
   
            // 每10毫秒改变一次位置,f反复100次。
            img.postDelayed(runnable,i*10);
        }
    }

Android 系统也提供了;

  • View 动画
    只能用于 View。并且动画改变的只是 View 的显示,但没改变 View 的响应区域。
    提供了四种类型的补间动画;
  • AlphaAnimation(透明度动画)
  • RotateAnimation(旋转动画)
  • ScaleAnimation(缩放动画)
  • TranslateAnimation(平移动画)
  • 动画集合类(AnimationSet);可将多个补间动画以组合的形式显示出来。
  • 属性动画
    于 Android 3.0 (API级别11)开始添加了属性动画。可以对任意对象的属性进行动画而不仅仅是 View,动画默认时间间隔 300ms,默认帧率 10ms/帧。
    提供了动画集合类(AnimatorSet),可将多个属性动画以组合的形式显示出来。
    通过不断得更新 View 的属性,让它表现出动画效果,只要满足两个条件:
    1、object 必须要提供 setXxx 方法,如果动画的时候没有传递初始值,那么还要提供 getXxx 方法,因为系统要去拿 xxx 属性的初始值(就是通过反射技术来获取和执行属性的 get 和 set 方法。如果这条不满足,程序直接 Crash)。
    2、object的 setXxx 对属性 xxx 所做的改变必须能够通过某种方法反映出来,比如会带来ui的改变啥的(如果这条不满足,动画无效果但不会Crash)。
    解决办法:
    1、如有权限,给对象加上 set/get 方法。
    2、用一个类来包装原始对象,间接为其提供 get/set 方法。
    3、采用 ValueAnimator,监听动画过程,自己实现属性的改变。
  • 逐帧动画
    可加载 Drawable 资源并逐帧的显示它们(一系列不同的图像按顺序显示)

预备知识

时间插值器(TimeInterpolator)

根据时间流逝的百分比(完成度)计算出动画进度的百分比(完成度)

<set xmlns:android="http://schemas.android.com/apk/res/android"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值