Android EditText(TextView)如何绘制闪烁的光标?

Android EditText(TextView)如何绘制闪烁的光标?,第1张

概述我通过扩展View从头开始创建自己的Mongolian垂直脚本TextView(和EditText).我试图理解闪烁光标是如何在 Android TextView source code中实现的.它似乎是由 Editor class的mEditor实例处理的.在那个类中我找到了一个drawCursor方法: private void drawCursor(Canvas canvas, int cu 我通过扩展VIEw从头开始创建自己的Mongolian垂直脚本TextVIEw(和EditText).我试图理解闪烁光标是如何在 Android TextView source code中实现的.它似乎是由 Editor class的mEditor实例处理的.在那个类中我找到了一个drawCursor方法:
private voID drawCursor(Canvas canvas,int cursorOffsetVertical) {    final boolean translate = cursorOffsetVertical != 0;    if (translate) canvas.translate(0,cursorOffsetVertical);    for (int i = 0; i < mCursorCount; i++) {        mCursorDrawable[i].draw(canvas);    }    if (translate) canvas.translate(0,-cursorOffsetVertical);}

显然,光标本身是某种类型的Drawable.

所以我找到了碎片,但我看不到森林穿过树林.能比我理解得更好的人能用简单的英语告诉我闪烁的光标是如何工作的吗?

以下是我不太了解的一些具体要点:

>光标与TextVIEw(或EditText),Layout,Editor和Drawable的关系.
>每次光标闪烁时,是重绘所有文本还是只重绘光标区域?

注意:

当我问到时,接受的答案回答了我的问题.但是,如果有人可以添加一个更详细解释事物的更规范的答案,我会很高兴接受一个不同的答案.

解决方法 > EditText只是可编辑的TextVIEw,布局用于测量,计算,文本的布局位置和方式. Drawable只是用于保持光标的外观,稍后在Canvas上绘制.
>仅光标路径为 invalidated.

闪烁基本上是递归的Runnable,Handler每隔500ms执行一次(猜测),以开关方式执行,并且在EditText具有焦点时重新调度.这也可以通过循环int的ValueAnimator来实现,其中光标可绘制的Alpha将在0到255之间切换.

总结

以上是内存溢出为你收集整理的Android EditText(TextView)如何绘制闪烁的光标?全部内容,希望文章能够帮你解决Android EditText(TextView)如何绘制闪烁的光标?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1136785.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存