Sobes.tech
Middle

Räägi mulle meetoditest, mis View uuesti joonistavad.

sobes.tech AI

Vastus AI-lt

Meetodid:

  • invalidate(): Märgib Vaate "määrdunud", mis nõuab ümberjoonistamist. Planeerib onDraw() täitmise tulevikus. Uuendamine toimub peamise lõime kaudu. Kasutatakse, kui Vaate välised omadused (värv, taust jne) muutuvad.
  • postInvalidate(): Sarnane invalidate()-ga, kuid seda saab kutsuda kõikidest lõngadest, mitte ainult peamisest. Turvaline kasutada taustalõngades.
  • requestLayout(): Märgib Vaate "kehtetuks", mis nõuab selle suuruse ja asukoha ümberarvutamist. Planeerib onMeasure() ja onLayout() täitmise ning seejärel onDraw(). Kasutatakse, kui Vaate suurus või asukoht muutub (näiteks ViewGroup-i laste lisamisel/eemaldamisel).

Meetodite võrdlus:

Meetod Kutsutakse lõngast Layout uuendamine Uuendamine
invalidate() UI lõng Ei Jah
postInvalidate() Kõik lõngad Ei Jah
requestLayout() UI lõng Jah Jah (pärast layout)

Näide invalidate() kasutamisest:

// Vaate värvi muutmine ja uuendamise nõue
myView.setBackgroundColor(Color.RED)
myView.invalidate()

Näide requestLayout() kasutamisest:

// Lapseelemendi lisamine LinearLayout-i ja layout ning uuendamise nõue
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()