Jakie właściwości możesz dodać jako rozszerzenie w Android?
sobes.tech AI
Odpowiedź od AI
W rozwoju Android funkcje i właściwości rozszerzeń pozwalają na dodanie nowej funkcjonalności do istniejących klas bez dziedziczenia lub użycia dekoratorów. Jest to szczególnie przydatne podczas pracy z standardowymi klasami SDK.
Właściwości rozszerzeń to właściwości, które możemy dodawać do istniejących klas. Nie przechowują stanu, ich wartość obliczana jest za pomocą getter'a.
Przykłady użycia właściwości rozszerzeń w Android:
-
Uproszczenie dostępu do LayoutInflater:
// Dodanie właściwości rozszerzenia do dostępu do LayoutInflater val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Teraz można używać
context.layoutInflaterzamiastLayoutInflater.from(context). -
Krótka właściwość do ukrywania View:
// Właściwość rozszerzenia do ustawiania widoczności View na GONE var View.isVisibleGone: Boolean get() = visibility == View.VISIBLE // Getter do sprawdzania aktualnego stanu set(value) { // Setter do ustawiania stanu visibility = if (value) View.VISIBLE else View.GONE }Teraz można używać
view.isVisibleGone = falsedo ukrycia View. -
Pobieranie rozmiaru ekranu w DP:
// Właściwość rozszerzenia do pobierania szerokości ekranu w DP val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Przykład użycia:
context.screenWidthInDp. -
Dostęp do SharedPreferences:
// Właściwość rozszerzenia do pobierania SharedPreferences po nazwie fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Chociaż jest to funkcja, często używa się jej jako właściwości dla wygody:
context.sharedPreferences("my_prefs").
Ważne punkty o właściwościach rozszerzeń:
- Nie mogą mieć pól zapasowych (zmiennych przechowujących wartość).
- Muszą być zdefiniowane tylko z getterem (tylko do odczytu) lub z getterem i setterem (odczyt-zapis).
- Kompilują się jako metody statyczne, więc wywołuje się je przez klasę właściciela.
W skrócie, w Androidzie można dodać dowolną właściwość obliczaną, która logicznie należy do istniejącej klasy i upraszcza jej użycie, unikając tworzenia funkcji pomocniczych lub klas opakowujących.