作者:手机用户2502917325 | 来源:互联网 | 2023-02-07 19:48
我正在通过扩展从头创建我自己的蒙古文垂直脚本TextView
(和EditText
)View
.我试图了解如何在Android TextView
源代码中实现闪烁光标.它似乎是由类的一个mEditor
实例处理的.在那堂课里我找到了一个方法:Editor
drawCursor
private void drawCursor(Canvas canvas, int cursorOffsetVertical) {
final boolean translate = cursorOffsetVertical != 0;
if (translate) canvas.translate(0, cursorOffsetVertical);
for (int i = 0; i
显然,光标本身是Drawable
某种类型.
所以我找到了碎片,但我无法透过树木看到森林.能比我理解得更好的人能用简单的英语告诉我闪烁的光标是如何工作的吗?
以下是我不太了解的一些具体要点:
光标对关系TextView
(或EditText
)Layout
,Editor
和Drawable
.
每次光标闪烁时,是重绘所有文本还是只重绘光标区域?
注意:
接受的答案在我问的时候回答了我的问题.但是,如果有人能够添加一个更详细解释事物的更规范的答案,我会很高兴接受一个不同的答案.
1> Nikola Despo..:
EditText
是可编辑的TextView
,Layout
用于测量,计算,文本的布局位置和方式.Drawable
只是为了保持光标的外观,后来被绘制在Canvas
.
只有光标Path
是无效的.
闪烁基本上是递归的Runnable
,即Handler
每隔500毫秒(猜测)以开关方式执行,并且在EditText
重点时重新安排.这也可以通过循环ValueAnimator
int 来实现,其中光标可绘制的alpha将在0到255之间切换.
链接到GitHub中特定代码行的技巧本身就值得投票!