Skip to content

Commit 830a98d

Browse files
authored
Update README.md
1 parent 5b625b4 commit 830a98d

1 file changed

Lines changed: 11 additions & 76 deletions

File tree

README.md

Lines changed: 11 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)