我正在从头开始扩展View
,制作自己的蒙古语竖排文字TextView
(和EditText
)。我试图理解Android TextView
源代码中闪烁光标的实现方式。它似乎由Editor
类的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
的关系。 - 每次光标闪烁时,是否重新绘制所有文本或仅重新绘制光标区域?
注意:
接受的答案回答了我的问题。 但是,如果有人能添加一个更详细地解释事情的更加规范的答案,我很乐意接受不同的答案。