Sobes.tech
Middle

Ի՞նչ հատկություններ կարող եք ավելացնել որպես ընդարձակում Android-ում:

sobes.tech AI

Պատասխան AI-ից

Անձնական ծրագրավորման զարգացման մեջ, ընդլայնման ֆունկցիաները (extension functions) և հատկությունները (properties) թույլ են տալիս ավելացնել նոր ֆունկցիոնալություն առկա դասերին՝ առանց ժառանգության կամ դեկորատորների օգտագործման: Սա հատկապես օգտակար է SDK-ի ստանդարտ դասերի հետ աշխատելիս:

Ընդլայնման հատկություններ (Extension Properties) — դա հատկություններ են, որոնք կարող ենք ավելացնել առկա դասերին: Դրանք չեն պահում վիճակ, նրանց հաշվարկվող արժեքը որոշվում է getter-ով:

Օգտագործման օրինակներ 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:
  • Դրանք պետք է սահմանվեն կամ միայն getter-ով (կարդալու համար), կամ getter և setter-ով (կարդալու և գրելու համար):
  • Կոմպիլացվում են որպես ստատիկ մեթոդներ, ուստի կանչվում են դասի տիրոջ միջոցով:

Ընդհանուր առմամբ, Android-ում ընդլայնմամբ կարող եք ավելացնել ցանկացած հաշվարկվող հատկություն, որը տրամաբանականորեն վերաբերում է առկա դասին և հեշտացնում է նրա օգտագործումը՝ խուսափելով լրացուցիչ ֆունկցիաներ կամ օբյեկտային դասեր ստեղծելուց: