零、前言
项目源码在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();
![9414344-c6eb6954b2ff7c3d.gif](https://i-blog.csdnimg.cn/blog_migrate/217504ce6dbe0b0a8684d5d4d2712eb3.webp?x-image-process=image/format,png)
简单使用.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();//停止
}
![9414344-7d37fdab1a3a67c0.gif](https://i-blog.csdnimg.cn/blog_migrate/a5953ac3e1aaaf94b6de6efee8e6b04d.webp?x-image-process=image/format,png)
基本使用效果
三:插值器使用:目前定义四个简单的插值器
使用
mNumGo1.setInterpolator(new D_Sin_Inter())
![9414344-5b90c4e980c62cd1](https://i-blog.csdnimg.cn/blog_migrate/cd29683d09ff90c9f2a86e26199037fb.webp?x-image-process=image/format,png)
下面四种插值器效果比较
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]你的喜欢与支持将是我最大的动力
2.连接传送门:
更多安卓技术欢迎访问:安卓技术栈
我的github地址:欢迎star
简书首发,腾讯云+社区同步更新
张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
3.联系我
QQ:1981462002
邮箱:1981462002@qq.com
微信:zdl1994328
4.欢迎关注我的微信公众号,最新精彩文章,及时送达:
![9414344-c474349cd3bd4b82.jpg](https://i-blog.csdnimg.cn/blog_migrate/949397de52d903ca936b083656cf797f.webp?x-image-process=image/format,png)
公众号.jpg