我通过扩展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的关系.
>每次光标闪烁时,是重绘所有文本还是只重绘光标区域?
注意:
当我问到时,接受的答案回答了我的问题.但是,如果有人可以添加一个更详细解释事物的更规范的答案,我会很高兴接受一个不同的答案.