Sobes.tech
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()