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()və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()