Middle
View-ны кайра чийреңдер менен кайра тарткан ыкмалар жөнүндө айтып бер.
sobes.tech AI
AIден жооп
Ылдамдар:
invalidate(): View-ду "чирик" деп белгилейт, кайра сүрөт тартууну талап кылат.onDraw()аткарууну келечекте пландаштырат. Кайра сүрөт тартуу негизги агымда болот. Viewдин тышкы касиеттери (түсү, фон жана башка) өзгөргөндө колдонулат.postInvalidate():invalidate()менен окшош, бирок ар кандай агымдан чакырылышы мүмкүн, негизинен эмес. Арткы агымдарда колдонууга коопсуз.requestLayout(): View-ду "жараксыз" деп белгилейт, анын өлчөмү жана жайгашуусу кайра эсептелиши керек.onMeasure()жанаonLayout()аткарууну пландаштырат, андан кийинonDraw(). Viewдин өлчөмдөрү же жайгашуусу өзгөргөндө колдонулат (мисалы,ViewGroupичинде балдар элементтерин кошуу/алып салуу).
Методдорду салыштыруу:
| Метод | Чакырган агым | Layout кайра эсептөө | Кайра сүрөт тартуу |
|---|---|---|---|
invalidate() |
UI агымы | Жок | Ооба |
postInvalidate() |
Ар кандай агым | Жок | Ооба |
requestLayout() |
UI агымы | Ооба | Ооба (layoutтен кийин) |
invalidate() колдонуу мисалы:
// View түсүн өзгөртүү жана кайра сүрөт тартууну талап кылуу
myView.setBackgroundColor(Color.RED)
myView.invalidate()
requestLayout() колдонуу мисалы:
// LinearLayoutга баланы кошуу жана layoutту кайра эсептөө жана кайра сүрөт тартуу
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()