专栏首页Android知识点总结开源计划之--Android数字运动小插件--NumGo

开源计划之--Android数字运动小插件--NumGo

零、前言

项目源码在github,欢迎star:https://github.com/toly1994328/NumGo 主要作用:对0~1在一段时间内的变化进行监听的数值生成器(支持插值器),可以根据这些数值实现动画。 具有开始监听、结束监听、重复时监听、支持插值器

一 简单使用:让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();

简单使用.gif

二、 基本使用

        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();
    }

后记、

1.声明:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用NumGo实现安卓动画

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

    张风捷特烈
  • Java总结IO篇之其他IO流对象

    张风捷特烈
  • Java总结IO篇之字节流与字符流转化

    张风捷特烈
  • 用NumGo实现安卓动画

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

    张风捷特烈
  • 14:IO之字符字节流

    六月的雨
  • 漫谈可视化Prefuse(一)---从SQL Server数据库读取数据

      上篇《可视化工具solo show-----Prefuse自带例子GraphView讲解》主要介绍了整个Prefuse工具集具有的一些特征、框架的运行流程,...

    JackieZheng
  • 解读Raft(四 成员变更)

    最近工作中讨论到了Raft协议相关的一些问题,正好之前读过多次Raft协议的那paper,所以趁着讨论做一次总结整理。

    林一
  • freemark学习(二):freemark的数据类型(1)

    在上一篇《freemark学习(一):hello freemark》我们快速入手freemark并且输出了hellofreemark。那么在本节中我们将学习fr...

    凯哥Java
  • WPF MVVM实现TreeView

    今天有点时间,做个小例子WPF MVVM 实现TreeView 只是一个思路大家可以自由扩展 文章最后给出了源码下载地址 图1 ?    图2     ? 模...

    lpxxn
  • 楠哥教你学 Java|JUC 并发编程 002 期

    wait 的功能和 sleep 类似,都是让线程暂停执行任务,但其实是两个完全不同的方法。

    南风

扫码关注云+社区

领取腾讯云代金券