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. PlaneeribonDraw()täitmise tulevikus. Uuendamine toimub peamise lõime kaudu. Kasutatakse, kui Vaate välised omadused (värv, taust jne) muutuvad.postInvalidate(): Sarnaneinvalidate()-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. PlaneeribonMeasure()jaonLayout()täitmise ning seejärelonDraw(). Kasutatakse, kui Vaate suurus või asukoht muutub (näiteksViewGroup-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()