用NumGo实现安卓动画

简介: NumGo是对0~1在一段时间内的变化进行监听的数值生成器(支持插值器),可以根据这些数值实现动画。项目源码在github,欢迎star:https://github.
NumGo是对0~1在一段时间内的变化进行监听的数值生成器(支持插值器),可以根据这些数值实现动画。

项目源码在github,欢迎star:https://github.com/toly1994328/NumGo

一:简单使用:让textView旋转360度动画

 mId_tv_hello = findViewById(R.id.id_tv_hello);
    new NumGo().setOnUpdate(new NumGo.OnUpdate() {
        @Override
        public void onUpdate(float rate) {
            mId_tv_hello.setRotation(rate *360);
        }
    }).go();
简单使用效果

二:基本使用

        NumGo numGo = new NumGo(true, 5, 1000);
///////////用构造函数,等价下面三句////////////////////////////
//       //设置重复方式 是否是回返式,及0~1后再1~0          ///
//        numGo.setReverse(true);//0-->1--|1-->0       ///
//        //numGo.setReverse(false);//0-->1--|0-->1   ///
//        //设置重复次数 -1无限重复                     ///             
//        numGo.setRepeatCount(5);                  ///
//        //设置时间                                   ///             
//        numGo.setTime(10000);                   ///

        //更新时监听
        numGo.setOnUpdate(new NumGo.OnUpdate() {
            @Override
            public void onUpdate(float rate) {
                mId_tv_hello.setTranslationX(100 * rate);
            }
        });
        //停止时监听
        numGo.setOnStop(new NumGo.OnStop() {
            @Override
            public void onStop() {
                mId_tv_hello.setText("I was Stopped");
            }
        });
        //重复时监听
        numGo.setOnRepeat(new NumGo.OnRepeat() {
            @Override
            public void onRepeat(int count) {
                mId_tv_hello.setText(mId_tv_hello.getText() + ":" + count);

            }
        });

        numGo.go();//运行
//        numGo.end();//停止
    }
基本使用效果

三:插值器使用:目前定义四个简单的插值器

使用

mNumGo1.setInterpolator(new D_Sin_Inter())
下面四种插值器效果比较

sin式减速

        mNumGo1 = new NumGo();
        mNumGo1.setInterpolator(new D_Sin_Inter());
        mNumGo1.setOnUpdate(new NumGo.OnUpdate() {
            @Override
            public void onUpdate(float rate) {
                mSinD.setTranslationY(-1200 * rate);
            }
        });

sin式加速

        mNumGo2 = new NumGo();
        mNumGo2.setInterpolator(new A_Sin_Inter());
        mNumGo2.setOnUpdate(new NumGo.OnUpdate() {
            @Override
            public void onUpdate(float rate) {
                mSinA.setTranslationY(-1200 * rate);
            }
        });

x平方式减速:

        mNumGo3 = new NumGo();
        mNumGo3.setInterpolator(new D_X2_Inter());
        mNumGo3.setOnUpdate(new NumGo.OnUpdate() {
            @Override
            public void onUpdate(float rate) {
                mXD.setTranslationY(-1200 * rate);
            }
        });

x平方式加速:

        mNumGo4 = new NumGo();
        mNumGo4.setInterpolator(new A_X2_Inter());
        mNumGo4.setOnUpdate(new NumGo.OnUpdate() {
            @Override
            public void onUpdate(float rate) {
                mXA.setTranslationY(-1200 * rate);
            }
        });

运行:

    @OnClick(R.id.start)
    public void onViewClicked() {
        mNumGo1.go();
        mNumGo2.go();
        mNumGo3.go();
        mNumGo4.go();
    }
相关文章
|
Linux Shell 数据安全/隐私保护
CentOS忘记密码重置密码教程
CentOS忘记密码重置密码教程
|
存储 JavaScript 前端开发
【JavaScript】Set、Map、WeakSet、WeakMap
Set、Map、WeakSet和WeakMap是ES6引入的新的数据结构,它们在处理数据时具有不同的特性和用途。本文将详细介绍它们的用法、特性、区别、优缺点以及使用场景和注意事项,并给出相应的代码示例
177 0
|
存储 SQL 关系型数据库
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
ODS 全称是 Operational Data Store**,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。
5245 0
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
|
设计模式 Java
继承和组合如何选择|设计模式基础
在前文我们讲解继承的特性时提到,继承为解决代码复用问题而生,但是在实际使用时,需要多用组合,少用继承。
|
Java
Java一些常见的坑
总是觉得自己Java基础还是不行,需要恶补。今天偶然mark了一本《Java解惑》,其中以端程序的方式罗列了95个即常见又不常见的xian(坑)jing(儿),拿来瞻仰一下。
77 0
|
编译器 C++ 容器
C++按值返回对象那些事
C++按值返回对象那些事
313 0
|
自然语言处理 安全 机器人
直击!10万阿里小二的复工生活
带大家一起走进复工后的阿里园区,一起了解阿里小二的复工生活。
直击!10万阿里小二的复工生活
|
前端开发 持续交付 数据采集
|
Android开发 开发工具 Windows