Millised meetodid on olemas View uuesti joonistamiseks Androidis?
sobes.tech AI
Vastus AI-lt
Androidis on mitu peamist meetodit View'i ümberjoonistamiseks:
-
invalidate(): See meetod märgib praeguse ja kõik alamvaated "mustaks", mis nõuab nende ümberjoonistamist. Süsteem plaanib joonistamisprotsessi tulevikus (tavaliselt järgmises kaadris). Kasutatakse, kui midagi muutub, mis mõjutab View välimust (näiteks värv, tekst). Kutsutakse mistahes niidist. -
postInvalidate(): Sarnaneinvalidate(), kuid mõeldud kutsumiseks taustniidist. Saadab sõnum peamisele UI-niidileinvalidate()teostamiseks. -
requestLayout(): See meetod näitab, et View vajab oma suuruse ja asukoha ümberarvutamist. See kutsub välja mõõtmis- ja paigutusprotsessi (measure and layout pass) pärast ümberjoonistamist. Kasutatakse, kui midagi muutub, mis mõjutab View suurust või asukohta (näiteks alamelementide lisamine/eemaldamine, paddingi muutmine). Kutsutakse ainult peamisest UI-niidist.
Kui muutub nii välimus kui ka suurus/asukoht View'il, piisab sageli requestLayout() kutsumisest, kuna see tavaliselt kutsub invalidate() protsessis. Kuid otsene ainult välimuse muutmine nõuab ainult invalidate().
Näide invalidate() kasutamisest:
// View'i värvi muutmine peamise niidiga
myView.setBackgroundColor(Color.parseColor("#FF0000"));
myView.invalidate();
Näide postInvalidate() kasutamisest taustniidist:
new Thread(new Runnable() {
@Override
public void run() {
// View'i teksti muutmine taustniidist
myView.setText("Uus tekst");
myView.postInvalidate(); // Ümberjoonistamine peamise niidiga
}
}).start();
Näide requestLayout() kasutamisest:
// Paddingi muutmine ja paigutuse uuesti arvutamine peamise niidiga
myView.setPadding(10, 10, 10, 10);
myView.requestLayout();
Oluline on mõista View'i joonistamise elutsüklit:
- Andmete muutmine (näiteks värv, tekst, suurus).
invalidate()võirequestLayout()kutsumine.- Süsteem planeerib ümberjoonistamise.
- Mõõtmisprotsess (
onMeasure()). - Paigutus (
onLayout()). - Joonistamine (
onDraw()).
invalidate() käivitab 6. sammu, requestLayout() aga 4., 5. ja 6. sammu.