Sobes.tech
Middle

Реци ми о методама који поново цртају View.

sobes.tech АИ

Одговор од АИ

Методе:

  • invalidate(): označava View kao "prljav", što zahteva ponovno crtanje. Planira izvršenje onDraw() u budućnosti. Ponovno crtanje se dešava u glavnom thread-u. Koristi se ako se spoljašnja svojstva View-a (boja, pozadina itd.) promene.
  • postInvalidate(): Slično invalidate(), ali može biti pozvano iz bilo kojeg thread-a, ne samo iz glavnog. Sigurno za korišćenje u pozadinskim thread-ovima.
  • requestLayout(): označava View kao "nevažeći", što zahteva ponovno računanje njegove veličine i pozicije. Planira izvršenje onMeasure() i onLayout(), zatim onDraw(). Koristi se ako se dimenzije ili pozicija View-a promene (npr. pri dodavanju/uklanjanju dece u ViewGroup).

Poređenje metoda:

Metod Thread poziva Ponovno računanje layout-a Ponovno crtanje
invalidate() UI thread Ne Da
postInvalidate() Bilo koji thread Ne Da
requestLayout() UI thread Da Da (nakon layout-a)

Primer korišćenja invalidate():

// Promena boje View-a i zahtev za ponovnim crtanjem
myView.setBackgroundColor(Color.RED)
myView.invalidate()

Primer korišćenja requestLayout():

// Dodavanje deteta u LinearLayout i zahtev za ponovnim računom layout-a i crtanjem
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()