本文已经在微信公众号【Android群英传】发表。
未经允许不得转载。
转载请注明作者AndroidMsky及原文链接
http://blog.csdn.net/androidmsky/article/details/53009886
本文Github代码链接
https://github.com/AndroidMsky/RandomTextView
Github代码已经更新为v1.3
2017年6月13日,我们加入了对view状态的监听。Activity退出,view自动销毁。不用重写onestroy了
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
destroy();
}
2016年11-30号,一位热心同学私信我反映会出现内存泄漏问题。特别推出v1.2检测并且,解决内存泄漏问题,并讲述一下,看过本文的直接点传送门。
2016年11月11号,RandomTextView第一次更新为v1.1版本吧。
(解决了这样一个场景,一个抽奖的页面想滚动30秒,可能maxline加到100行的数字滚动,对此我要对性能进行优化避免过度绘制,在本文最后做出解释)
Github代码已经更新为v1.1
先看看X金APP的效果:
我们自己实现的效果:
接下来介绍一下我的自定义View RandomTextView的用法和原理
用法
1.仓库
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.AndroidMsky:RandomTextView:v1.3'
}
2.考入
只有200行绝对轻量方便。
xml中定义:
<com.example.liangmutian.randomtextview.view.RandomTextView
android:id="@+id/rtv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:padding="0px"
android:text="123456"
android:textSize="28sp"/>
很开心的事,RandomTextView继承自TextView所以可以使用TextView的所有方法。color,size等等直接去定义就OK啦。
所有位数相同速度滚动:
mRandomTextView.setText("876543");
mRandomTextView.setPianyilian(RandomTextView.ALL);
mRandomTextView.start();
从左到右侧由快到慢滚动:
mRandomTextView.setText("12313288");
mRandomTextView.setPianyilian(RandomTextView.FIRSTF_FIRST);
mRandomTextView.start();
从左到右侧由慢到快滚动:
mRandomTextView.setText("9078111123");
mRandomTextView.setPianyilian(RandomTextView.FIRSTF_LAST);
mRandomTextView.start();
自定义每位数字的速度滚动(每帧滚动的像素):
mRandomTextView.setText("909878");
pianyiliang[0] = 7;
pianyiliang[1] = 6;
pianyiliang[2] =