Sobes.tech
Middle

რა თვისებებს შეგიძლიათ დაამატოთ როგორც გაფართოება Android-ში?

sobes.tech AI

პასუხი AI-სგან

Android үсешендә киңәйтү функциялары (extension functions) һәм үзлекләр (properties) барлык классларга яңа функциональлек өстәү мөмкинлеген бирә, бу мирас алу яки декораторлар куллануны таләп итми. Бу SDK стандарт класслары белән эшләгәндә аеруча файдалы.

Киңәйтү үзлекләре (Extension Properties) — без өсти алырлык үзлекләр. Алар хәлен сакламый, аларның исәпләнгән кыйммәте геттер белән билгеләнә.

Androidда киңәйтү үзлекләрен куллану мисаллары:

  1. LayoutInflaterга җиңел керү:

    // LayoutInflaterга керү өчен киңәйтү үзлеген өстәү
    val Context.layoutInflater: LayoutInflater  
        get() = LayoutInflater.from(this)  
    

    Хәзер context.layoutInflater кулланырга мөмкин, LayoutInflater.from(context) урынына.

  2. View өчен кыска үзлек — яшерелгән:

    // Viewның күренешен GONE итү өчен киңәйтү үзлеге
    var View.isVisibleGone: Boolean  
        get() = visibility == View.VISIBLE // Хәзерге хәлен тикшерү  
        set(value) { // Хәлне билгеләү  
            visibility = if (value) View.VISIBLE else View.GONE  
        }
    

    Хәзер view.isVisibleGone = false дип кулланырга мөмкин, View яшерелә.

  3. Экран размеры DP белән алу:

    // Экран киңлеген DP белән алу өчен киңәйтү үзлеге
    val Context.screenWidthInDp: Int  
        get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()  
    

    Мисал: context.screenWidthInDp.

  4. SharedPreferencesка керү:

    // Исеме буенча SharedPreferences алу өчен киңәйтү үзлеге
    fun Context.sharedPreferences(name: String): SharedPreferences =  
        getSharedPreferences(name, Context.MODE_PRIVATE)  
    

    Бу функция булса да, еш кына уңайлы керү өчен үзлек итеп кулланыла: context.sharedPreferences("my_prefs").

Киңәйтү үзлекләренең мөһим моментлары:

  • Алар backing fields булмаска тиеш (мәгълүмат саклаучы үзгәрешле).
  • Алар яки геттер белән генә (укырга), яки геттер һәм сеттер белән (укырга һәм язарга) билгеләнергә тиеш.
  • Алар статик методлар итеп компиляцияләнә, шуңа күрә аларны класс хуҗасы аша чакыралар.

Гомумән алганда, Androidда киңәйтү итеп, логик рәвештә, барлык исәпләнүче үзлекләрне өстәргә мөмкин, бу аның куллануын җиңеләйтә, ярдәмче функцияләр яки капланган класслар төзүне бетерә.