Sobes.tech
Middle

Baxışı yenidən çizen metodlər haqqında danış.

sobes.tech Süni İntellekt

AI-dan cavab

Yöntemlər:

  • invalidate(): View-i "kirləmiş" kimi işarə edir və yenidən çəkilməsini tələb edir. onDraw()-un gələcəkdə icrasını planlaşdırır. Yenidən çəkilmə əsas axında baş verir. View-in xarici xüsusiyyətləri (rəng, fon və s.) dəyişdikdə istifadə olunur.
  • postInvalidate(): invalidate()-a bənzəyir, lakin hər hansı bir axından çağırıla bilər, yalnız əsas axından deyil. Arxa plan axınlarında təhlükəsizdir.
  • requestLayout(): View-i "etibarsız" kimi işarə edir və onun ölçüsü və mövqeyinin yenidən hesablanmasını tələb edir. onMeasure()onLayout()-un icrasını planlaşdırır, sonra isə onDraw()-u. View-in ölçüləri və ya mövqeyi dəyişdikdə istifadə olunur (məsələn, ViewGroup-da uşaqların əlavə və ya silinməsi zamanı).

Yöntemlərin müqayisəsi:

Yöntəm Çağırış axını Layout-un yenidən hesablanması Yenidən çəkilmə
invalidate() UI axını Xeyr Bəli
postInvalidate() Hər hansı axın Xeyr Bəli
requestLayout() UI axını Bəli Bəli (layout-dan sonra)

invalidate()-dən istifadə nümunəsi:

// View-in rəngini dəyiş və yenidən çəkilməsini tələb et
myView.setBackgroundColor(Color.RED)
myView.invalidate()

requestLayout()-dan istifadə nümunəsi:

// LinearLayout-a uşaq element əlavə et və layout-un yenidən hesablanmasını və yenidən çəkilməsini tələb et
val newTextView = TextView(context)
linearLayout.addView(newTextView)
linearLayout.requestLayout()