Tworzę swój własny pionowy skrypt mongolski TextView
(i EditText
) od podstaw, rozszerzając View
. Próbuję zrozumieć, w jaki sposób migający kursor jest zaimplementowany w Android TextView
source code. Wydaje się być obsługiwane przez instancję mEditor
z Editor
class. W tej klasie znalazłem drawCursor
metody:W jaki sposób Android EditText (TextView) narysuje migający kursor?
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);
}
Podobno sam kursor jest Drawable
jakiegoś typu.
Więc znajduję kawałki, ale nie mogę zobaczyć lasu przez drzewa. Czy ktoś, kto rozumie to lepiej ode mnie, mówi po angielsku, jak działa migający kursor?
Oto kilka konkretnych punktów ja naprawdę nie rozumiem: związek
- kursora do
TextView
(lubEditText
),Layout
,Editor
iDrawable
. - Za każdym razem, gdy kursor miga, czy cały tekst jest przerysowywany, czy tylko obszar kursora?
Uwaga:
Zaakceptowanych odpowiedź odpowiedzi na moje pytanie jak spytałem go. Byłbym jednak zadowolony z przyjęcia innej odpowiedzi, jeśli ktokolwiek może dodać bardziej kanoniczną, która wyjaśnia szczegóły bardziej szczegółowo.
Trick odwołuje się do konkretnych linii kodu w GitHub it warte przegrania sam w sobie! – Suragch