Ի՞նչ հատկություններ կարող եք ավելացնել որպես ընդարձակում Android-ում:
sobes.tech AI
Պատասխան AI-ից
Անձնական ծրագրավորման զարգացման մեջ, ընդլայնման ֆունկցիաները (extension functions) և հատկությունները (properties) թույլ են տալիս ավելացնել նոր ֆունկցիոնալություն առկա դասերին՝ առանց ժառանգության կամ դեկորատորների օգտագործման: Սա հատկապես օգտակար է SDK-ի ստանդարտ դասերի հետ աշխատելիս:
Ընդլայնման հատկություններ (Extension Properties) — դա հատկություններ են, որոնք կարող ենք ավելացնել առկա դասերին: Դրանք չեն պահում վիճակ, նրանց հաշվարկվող արժեքը որոշվում է getter-ով:
Օգտագործման օրինակներ Android-ում՝
-
Հեշտացնել LayoutInflater-ին հասանելիությունը:
// Ընդլայնման հատկություն ավելացնելով LayoutInflater-ին հասանելիություն ստանալու համար val Context.layoutInflater: LayoutInflater get() = LayoutInflater.from(this)Այժմ կարող եք օգտագործել
context.layoutInflaterփոխարենLayoutInflater.from(context): -
Կարճ հատկություն 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-ը թաքցնելու համար: -
Սկրինի չափը DP-ով ստանալու համար:
// Ընդլայնման հատկություն՝ ստանալու էկրանի լայնությունը DP-ով val Context.screenWidthInDp: Int get() = resources.displayMetrics.widthPixels / resources.displayMetrics.density.toInt()Օրինակ՝
context.screenWidthInDp: -
SharedPreferences հասանելիություն:
// Ընդլայնման հատկություն՝ ստանալու SharedPreferences անունով fun Context.sharedPreferences(name: String): SharedPreferences = getSharedPreferences(name, Context.MODE_PRIVATE)Թեև սա ֆունկցիա է, այն հաճախ օգտագործվում է որպես հատկություն՝ հարմարավետ հասանելիության համար՝
context.sharedPreferences("my_prefs"):
Ընդլայնման հատկությունների կարևոր կետեր:
- Դրանք չեն կարող ունենալ backing fields:
- Դրանք պետք է սահմանվեն կամ միայն getter-ով (կարդալու համար), կամ getter և setter-ով (կարդալու և գրելու համար):
- Կոմպիլացվում են որպես ստատիկ մեթոդներ, ուստի կանչվում են դասի տիրոջ միջոցով:
Ընդհանուր առմամբ, Android-ում ընդլայնմամբ կարող եք ավելացնել ցանկացած հաշվարկվող հատկություն, որը տրամաբանականորեն վերաբերում է առկա դասին և հեշտացնում է նրա օգտագործումը՝ խուսափելով լրացուցիչ ֆունկցիաներ կամ օբյեկտային դասեր ստեղծելուց: