@@ -397,83 +397,18 @@ public class MyApplication extends Application {
397397
398398欢迎大家提出各种问题,让控件越来越好用谢谢。
399399 2016.11.30 Androidmsky
400+ ###License
400401
402+ Copyright [ 2016] [ AndroidMksy]
401403
402- <h2 id =" 1 " >v1.1更新内容</h2 >
403- v1.1更新内容:
404+ Licensed under the Apache License, Version 2.0 (the "License");
405+ you may not use this file except in compliance with the License.
406+ You may obtain a copy of the License at
404407
405- 之前我们的思路是按照maxLine画出每一行,但是我们最多看见2行内容,这样是不科学的,完全中了过度绘制的圈套呀,再想如下一个场景,一个抽奖的页面想滚动30秒,可能maxline加到100行的数字滚动,那每帧都要绘制100行的text这显然会出现性能问题,造成掉帧的影响,所以我们队drawtext方法进行一下拦截,新建一个drawText方法:
408+ http://www.apache.org/licenses/LICENSE-2.0
406409
407- ```
408- private void drawText(Canvas mCanvas,String text,float x,float y,Paint p){
409-
410- if (y>=-measuredHeight&&y<=2*measuredHeight)
411-
412- mCanvas.drawText(text + "", x,
413- y, p);
414- else return;
415- }
416- ```
417- 我们对y坐标进行判断,如果在textView上下各一个textView大小内,我们进行绘制,如果超出这个范围我们直接return,不做任何处理,这样既不影响我们的绘制逻辑又解决了过渡绘制问题。
418- 讲原来的drawText方法替换:
419-
420- ```
421- drawText(canvas,arrayListText.get(j) + "", 0 + f0 * j,
422- baseline, p);
423- // canvas.drawText(arrayListText.get(j) + "", 0 + f0 * j,
424- // baseline, p);
425- ```
426- 作者将持续维护该框架,也希望大家star,fork,issue。
427-
428- 共同做出一个更好的RandomTextView
429-
430- 2016.11.11 Androidmsky
431-
432-
433-
434- 回顾
435- --
436-
437- 在自定义view的时候如果你的view是像本文一样,循环去绘制不断刷新的话,就意味着onDraw方法会随着你view的帧数不断的被调用,一秒可能被执行几十次,所以写在这里的方法,一定要小心为妙,比如一些无需每次都初始化的变量切记不可以定义在onDraw方法里,比如本文的getText();方法去获取当前TextView的内容,就要写在外面。但是可能有些方法你必须在super.onDraw(canvas),以后才可以获取的比如getPaint();那么我们就可以加个布尔值firstIn来控制只有第一次进入onDraw方法才去执行,或者其它的只做一次的事情都可以这样去控制。
438-
439- 循环绘制动画效果我们一定要理清两条线,一条是每一帧绘制什么,另一条是动画结束你都绘制了什么。
440-
441- 第一条线应该注意你绘制的只是一个瞬间,是个不断重复执行的线。
442-
443- 第二条线就是无数个第一条线加上时间点共同组成的,主要就是控制每次的不同,比如本文中增加的偏移量,是数据(本文中每一个字符的坐标)的变化,去影响onDraw方法,绘制出不通的东西呈现在屏幕上。第二条线还要控制好什么时候结束所有的第一条线,也就是整个动画结束的条件,本文中的例子讲是一旦所有字符的最后一行都超过或者等于TextView的基准线,那么整个动画结束。
444-
445- 绘制原理的逻辑就讲完啦,RandomTextView可以投入使用啦,自定义view并不难,只要你知道安卓API能让你能干什么,你想干什么,你可能马上就知道你应该怎么做啦。
446-
447- 欢迎关注作者。欢迎评论讨论。欢迎拍砖。
448-
449- 如果觉得这篇文章对你有帮助 欢迎打赏,
450-
451- 欢迎star,Fork我的github。
452-
453- 喜欢作者的也可以Follow。也算对作者的一种支持。
454- 本文Github代码链接
455- https://github.com/AndroidMsky/RandomTextView
456-
457- 欢迎加作者自营安卓开发交流群:308372687
458- ![ 这里写图片描述] ( http://img.blog.csdn.net/20161028111556438 )
459-
460-
461-
462- 博主原创未经允许不许转载。
463-
464-
465-
466- —————————————————————————————
467-
468- 作者推荐:
469-
470- 安卓自定义view滚动数据显示
471- http://blog.csdn.net/androidmsky/article/details/53009886
472- RecyclerView下拉刷新分页加载性能优化和Gilde配合加载三部曲
473- http://blog.csdn.net/androidmsky/article/details/53115818
474- 打造企业级网络请求框架集合retrofit+gson+mvp
475- http://blog.csdn.net/androidmsky/article/details/52882722
476- 安卓手机自动接起QQ视频秒变摄像头
477- http://blog.csdn.net/androidmsky/article/details/53066441
478-
479- —————————————————————————————
410+ Unless required by applicable law or agreed to in writing, software
411+ distributed under the License is distributed on an "AS IS" BASIS,
412+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
413+ See the License for the specific language governing permissions and
414+ limitations under the License.
0 commit comments