• D9-Android自定义控件之动画篇1-ObjectAnimator


    本篇是关于ObjectAnimator的演示
    ObjectAnimator是针对有setXxxxxx方法的属性,进行的"Xxxxxx"属性变化动画
    绘制部分就不废话了,前面已经说很多了,直接进入主题


    一、下移示例:

    9414344-d069aa61e40ea1ad.gif
    下移动画.gif
    /**
     * 下移动画
     */
    private ObjectAnimator mMoveDown;
    
    float translationY = getTranslationY();//当前Y偏移量
    mMoveDown = ObjectAnimator//创建实例
            //(View,属性名,初始化值,结束值)
            .ofFloat(this, "translationY", translationY, translationY + 300)
            .setDuration(1000);//设置时常
    
    mMoveDown.start();//开启动画
    

    加上背景看一下,可以看出是整个View进行了变化。

    9414344-28132b3fcafc0602.gif
    加背景.gif
    常用属性一览:
    属性名 演示 解释
    alpha
    9414344-361b9db606f03958.gif
    透明度1~0
    translationX
    9414344-c19ac1d9ab0d4330.gif
    X方向移动
    translationY
    9414344-888a59601da0ea79.gif
    Y方向移动
    rotation
    9414344-ba58fdbe672f41b4.gif
    旋转(默认View中心点)
    rotationX
    9414344-4eaa00d4731c400c.gif
    X轴旋转(默认View中心横轴)
    translationY
    9414344-9fd22ee1c58382f3.gif
    Y轴旋转(默认View中心纵轴)
    scaleX
    9414344-7e65e550bcc6cccd.gif
    X缩放 倍数
    scaleY
    9414344-a1552e517c9ab78a.gif
    Y缩放 倍数

    二、其他

    1.旋转缩放中心点设置:
    setPivotX(200);
    setPivotY(200);
    
    9414344-f9095bb28582ce1b.gif
    旋转中心点.gif
    2.多参数

    0-->360 360-->0 0-->90

    .ofFloat(this, "rotation", 0, 360,360,0,0,90)
    
    9414344-0a624776a2ee80ac.gif
    多参数.gif
    3.延迟、重复、重复模式

    重复模式:ValueAnimator.RESTART(1)和ValueAnimator.REVERSE(2)
    重复次数:ValueAnimator.INFINITE为无限循环(-1)

    translationX.setStartDelay(1000);
    translationX.setRepeatCount(2);
    translationX.setRepeatMode(ValueAnimator.RESTART);
    
    RESTART重复效果
    9414344-6ce2e1b025f3795c.gif
    延迟,RESTART重复.gif
    REVERSE重复效果
    9414344-6a5f9467aa1bf65c.gif
    REVERSE重复.gif

    三、自定义ObjectAnimator属性

    内置的只是一些常用的,我们也可以自定义自己的属性

    1.自定义圆的大小动画

    必须用一个setXxx的方法,属性名则为xxx,调用重绘方法

    public void setCircleR(float circleR) {
        mCircleR = circleR;
        invalidate();//记得重绘
    }
    
    private ObjectAnimator circleR() {
        return ObjectAnimator//创建实例
                //(View,属性名,初始化值,结束值)
                .ofFloat(this, "circleR", 100, 50,100,20,100)
                .setDuration(3000);//设置时常
    }
    
    9414344-17adabf8ad0b5a2e.gif
    自定义半径.gif
    2.自定义颜色动画
    public void setColor(int color) {
        mColor = color;
        invalidate();
    }
    
    private ObjectAnimator color() {
        ObjectAnimator color = ObjectAnimator//创建实例
                //(View,属性名,初始化值,结束值)
                .ofInt(this, "color", 0xff0000ff,0xffF2BA38,0xffDD70BC)
                .setDuration(3000);
        color.setEvaluator(new ArgbEvaluator());//颜色的估值器
        return color;
    }
    
    9414344-22fac2a00af843af.gif
    自定义颜色.gif

    下一篇将会带来:set动画集来控制多个动画,以及动画的监听。


    后记、

    1.声明:

    [1]本文由张风捷特烈原创,转载请注明
    [2]欢迎广大编程爱好者共同交流
    [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正

    [4]你的喜欢与支持将是我最大的动力

    2.连接传送门:

    更多安卓技术欢迎访问:安卓技术栈
    我的github地址:欢迎star
    张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com

    3.联系我

    QQ:1981462002
    邮箱:1981462002@qq.com
    微信:zdl1994328

    4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
    9414344-c474349cd3bd4b82.jpg
    公众号.jpg
  • 相关阅读:
    什么人一亏再亏,什么人亿万富翁? —兼谈本周经济与股市
    数组排序
    倒水
    倒水
    lua string
    lua string
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/toly-top/p/9781876.html
Copyright © 2020-2023  润新知