我正在通过扩展View
从头开始编写我自己的蒙古文垂直脚本TextView
(和EditText
)。我试图了解如何在Android TextView
source code中实现闪烁的光标。它似乎由Editor
class的mEditor
实例处理。在该类中,我发现一个drawCursor
方法:Android EditText(TextView)如何绘制闪烁的光标?
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
。 - 每次光标闪烁时,是否所有正在重绘的文本或只有光标区域?
注:
接受的答案回答我的问题,我问它。不过,如果任何人都可以添加更详细的解释事项的规范,我会很乐意接受不同的答案。
诀窍链接到GitHub上它特定的代码行本身值得赞扬! – Suragch