Android动画----属性动画

一、使用属性动画

1、定义:属性动画可以对任意对象的属性进行动画。默认时间间隔300ms,默认帧率10ms/帧

2、使用:

API 11才可以使用,之前的可以用Nineoldandroids来兼容,其有常用的几个动画类:ValueAnimator、ObjectAnimator、AnimatorSet。其使用方法如下:

(1)改变一个对象的translationY属性,沿着Y轴向上平移:用ObjectAnimator

(2)改变背景色属性

(3)动画集合变化

(4)也可以用XML实现,但用代码实现比较灵活

二、插值器和估值器

1、插值器是根据时间流逝比计算位移x的改变值(0~1)之间,例如:匀速插值器时间流逝比为0.5,则x改变值为0.5

2、估值器是对于x的改变具体变成了什么,也就是说具体的位移为多少,要用估值器来计算。例如:匀速运动,x的改变值为0.5,距离是从0到40,那么估值器算过后位移y的值为 (40-0)*05 = 20

3、自定义插值器

三、属性动画监听器

属性动画监听器主要有如下两个接口:AnimatorUpdateListener和AnimatorListener

1、AnimatorListener类

2、AnimatorUpdateListener

四、对任意属性做动画

eg:Button的宽度进行动画时,如果使用View动画是不行的。因为View只支持平移、旋转、缩放、不透明度,所以只能用属性动画。

1、属性动画生效条件

属性动画要求动画作用的对象提供该属性的get和set方法,不满足的话动画不生效。

2、如何添加set和get方法

    private void performAnimate() {//使用动画的方法
        ViewWrapper viewWrapper = new ViewWrapper(mButton);
        ObjectAnimator.ofInt(viewWrapper, "width", 500).setDuration(5000).start();
        
        //直接传mButton是实现不了的
        //ObjectAnimator.ofInt(mButton, "width", 500).setDuration(5000).start();
    }
    @Override
    public void onClick(View v) {
        if (v == mButton) {
            performAnimate();
        }
    }
    private static class ViewWrapper {//内部类,设置set/get
        private View mTarget;
        public ViewWrapper (View mTarget) {
            this.mTarget = mTarget;
        }
        
        public int getWidth() {
            return mTarget.getLayoutParams().width;
        }
        
        public void setWidth() {
            mTarget.getLayoutParams().width = width;
            mTarget.requestLayout();
        }
    }

五、属性动画工作原理--null看不懂。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值