我正在通過擴展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