Android View分析(五)—— 动画介绍

本文深入介绍了Android中的三种动画类型:平移、帧动画和属性动画。平移动画包括TranslateAnimation、ScaleAnimation、RotateAnimation和AlphaAnimation;帧动画涉及多张图片连续播放,需注意内存管理;属性动画如ObjectAnimator和ValueAnimator,能够改变控件位置和属性,并可通过TimeInterpolator和TypeEvaluator自定义动画效果。此外,还探讨了如何使用插值器和估值器来控制动画的时间规律和轨迹。

动画分为三种

1、传统的平移类动画

只是改变控件的视觉效果,但是实际位置没有变动,主要使用的类是TranslateAnimation(平移)、ScaleAnimation(缩放)、RotateAnimation(旋转)、AlphaAnimation(透明度)

2、帧动画

多张图片播放,这种需要控制图片的大小,不然容易oom

3、属性动画

3.1 ObjectAnimator动画

改变整体控件的位置,类似于传统的平移动画效果,继承ValueAnimator类,对他的封装,主要使用ObjectAnimator类,使用时传入对应的参数即可修改,参数包括translationX、translationY、scaleX、scaleY、rotate、alpha。

ObjectAnimator animator = new ObjectAnimator(view,"translationX",0,1);

3.2 ValueAnimator动画

可以改变控件的某一个属性,比如可以修改控件的高,设置逐渐变高等效果。这个又涉及两个重要的类
插值器TimeInterpolator:控制动画运行的规律,主要是时间的控制,
比如匀速LinearInterpolator、动画加速AccelearteInterpolator、最后阶段弹球效果BounceInterpolator、周期运动CycleInterpolator、先加速在减速AccelerateDecelerateInterpolator
实现:实现TimeInterpolator接口,重写getInterpolation()方法,在里面实现我们想要的效果
下面的就是和系统的LinearInterpolator一样的效果

public class MyLinearInterpolator implements TimeInterpolator {
    	@Override
    	public float getInterpolation(float input) {
        	return input;//这里面设置input*0.1表示只能完成总体效果的10%,input*20表示能完成2000%的效果,也就是如果画圆,前者只能画36度,后者可以画7200度,这部分的原理是因为估值器的fraction就是根据这个方法获取的值
    	}
}

估值器TypeEvaluator:控制动画的轨迹,某一刻的的最终效果
实现:实现TypeEvaluator接口,重写evaluate()方法

public class MyTypeEvluator implements TypeEvaluator<Float> {
    /**
     * fraction:表示动画完成度,据此计算当前动画的值
     * startValue:动画初始值
     * endValue:动画结束值
     * @return
     */
    @Override
    public Float evaluate(float fraction, Float startValue, Float endValue) {
        Float startInt = startValue;
        return (startInt+fraction*(endValue-startValue))*0.2f; //设置只能达到设置效果的20%
    }
}

PropertyValuesHolder:用来封装用户传入的属性和属性值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值