تشبه طريقة العرض المخصّصة المصمّمة بشكل جيد أي فئة أخرى مصمّمة بشكل جيد. إنه يغلف مجموعة محددة من وظائف ذات واجهة بسيطة، ويستخدم وحدة المعالجة المركزية (CPU) والذاكرة بكفاءة، وهكذا. ضِمن بالإضافة إلى كونه مصممة بشكل جيد، فيجب أن تفعل طريقة العرض المخصصة ما يلي:
- الامتثال لمعايير Android.
- قدِّم سمات أنماط مخصّصة تتوافق مع تنسيقات XML لنظام التشغيل Android.
- إرسال أحداث إمكانية الوصول.
- أن تكون متوافقة مع أنظمة أساسية متعدّدة لنظام Android
ويوفر إطار عمل Android مجموعة من الفئات الأساسية وعلامات XML لمساعدتك على إنشاء طريقة عرض يلبي كل هذه متطلبات المشروع. يناقش هذا الدرس كيفية استخدام إطار عمل Android لإنشاء البنية الأساسية. وظيفة عرض الصف.
يمكنك العثور على معلومات المعلومات في مكوّنات طريقة العرض المخصّصة.
تصنيف فرعي لطريقة العرض
تسري جميع فئات طرق العرض المحدّدة في إطار عمل Android
View
يمكن أيضًا لطريقة العرض المخصّصة
لتمديد "View
" مباشرةً، أو يمكنك
لتوفير الوقت من خلال تمديد أحد
عرض حالي
الفئات الفرعية مثل Button
.
للسماح لـ "استوديو Android" بالتفاعل مع العرض، يجب توفير دالة إنشاء على الأقل
Context
وكائن AttributeSet
كمَعلمات
تسمح الدالة الإنشائية هذه لمحرر التنسيق بإنشاء مثيل لطريقة العرض وتحريره.
Kotlin
class PieChart(context: Context, attrs: AttributeSet) : View(context, attrs)
Java
class PieChart extends View { public PieChart(Context context, AttributeSet attrs) { super(context, attrs); } }
تحديد السمات المخصّصة
لإضافة View
مدمج إلى واجهة المستخدم، يجب تحديده في عنصر XML
التحكم في
ومظهره وسلوكه مع سمات العناصر. يمكنك أيضًا إضافة تصميم
باستخدام XML. إلى
لتفعيل هذا السلوك في طريقة العرض المخصّصة، اتّبِع الخطوات التالية:
- حدد سمات مخصصة لعرضك في عنصر مورد
<declare-styleable>
. - حدِّد قيمًا للسمات في تنسيق XML.
- يمكنك استرداد قيم السمات في وقت التشغيل.
- طبِّق قيم السمات التي تم استردادها على العرض.
يناقش هذا القسم كيفية تحديد السمات المخصصة وتحديد قيمها. يتناول القسم التالي استرداد القيم وتطبيقها في وقت التشغيل.
لتحديد سمات مخصّصة، أضِف موارد <declare-styleable>
إلى مشروعك. من المعتاد وضع هذه الموارد في
ملف res/values/attrs.xml
. إليك
مثال على ملف attrs.xml
:
<resources> <declare-styleable name="PieChart"> <attr name="showText" format="boolean" /> <attr name="labelPosition" format="enum"> <enum name="left" value="0"/> <enum name="right" value="1"/> </attr> </declare-styleable> </resources>
يعرّف هذا الرمز عن سمتَين مخصّصتَين، showText
وlabelPosition
.
التي تنتمي إلى تصميم
كيان اسمه PieChart
. يكون اسم الكيان القابل للنمط هو نفسه حسب الاصطلاح
الاسم باعتباره
اسم الفئة
التي تحدِّد طريقة العرض المخصّصة. رغم أنه ليس من الضروري اتباع هذا الاصطلاح،
العديد من التعليمات البرمجية الشائعة
يعتمد المحررون على اصطلاح التسمية هذا لتوفير إكمال العبارة.
بعد تحديد السمات المخصصة، يمكنك استخدامها في تنسيق ملفات XML، تمامًا مثل الملفات المضمَّنة
ذات الصلة.
هو أن السمات المخصصة تنتمي إلى مساحة اسم مختلفة. بدلاً من الانتماء
إلى مساحة الاسم http://schemas.android.com/apk/res/android
، فهي تنتمي إلى http://schemas.android.com/apk/res/[your package name]
. على سبيل المثال، إليك كيفية استخدام
السمات المحددة لـ
PieChart
:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto"> <com.example.customviews.charting.PieChart custom:showText="true" custom:labelPosition="left" /> </LinearLayout>
لتجنب الاضطرار إلى تكرار معرّف الموارد المنتظم (URI) لمساحة الاسم الطويلة، يستخدم النموذج
التوجيه xmlns
. يحدد هذا التوجيه الاسم المستعار custom
مساحة الاسم http://schemas.android.com/apk/res/com.example.customviews
.
يمكنك اختيار أي اسم مستعار تريده لمساحة الاسم.
لاحِظ اسم علامة XML التي تضيف طريقة العرض المخصّصة إلى التنسيق. إنها الوظيفة الكاملة
الاسم المؤهل
فئة عرض مخصص. إذا كانت فئة المشاهدة فئة داخلية، يمكنك تأهيلها أيضًا
باسم الفئة الخارجية للعرض.
على سبيل المثال،
يتضمّن صف واحد (PieChart
) فئة داخلية تسمى PieView
. لاستخدام
السمات المخصصة من هذه الفئة،
استخدِم العلامة com.example.customviews.charting.PieChart$PieView
.
تطبيق السمات المخصّصة
عند إنشاء طريقة عرض من تنسيق XML، تتم قراءة جميع السمات في علامة XML
من المرجع
وتمريرها إلى الدالة الإنشائية للملف الشخصي
AttributeSet
وعلى الرغم من
ويمكن قراءة القيم من AttributeSet
مباشرةً، وبذلك
بعض العيوب:
- لم يتم التعامل بشكل نهائي مع مراجع الموارد ضمن قيم السمات.
- لا يتم تطبيق الأنماط.
بدلاً من ذلك، يمكنك تمرير AttributeSet
إلى
obtainStyledAttributes()
هذه الطريقة تمرر
TypedArray
مصفوفة
القيم التي
التي لم تتم ملاءمتها بالفعل وتصميمها.
يقوم برنامج تجميع موارد Android بالكثير من العمل لإجراء الاتصالات
obtainStyledAttributes()
كثيرًا. لكل <declare-styleable>
مورد في الدليل res/
، يحدد R.java
الذي تم إنشاؤه كلاً من مصفوفة السمات
المعرفات ومجموعة من
الثوابت التي تحدد الفهرس لكل تصنيف في الصفيفة. يمكنك استخدام البيانات الوصفية المحددة مسبقًا
الثوابت في القراءة
السمات من TypedArray
. وإليك كيفية إجراء ذلك:
فئة PieChart
تقرأ سماتها:
Kotlin
init { context.theme.obtainStyledAttributes( attrs, R.styleable.PieChart, 0, 0).apply { try { mShowText = getBoolean(R.styleable.PieChart_showText, false) textPos = getInteger(R.styleable.PieChart_labelPosition, 0) } finally { recycle() } } }
Java
public PieChart(Context context, AttributeSet attrs) { super(context, attrs); TypedArray a = context.getTheme().obtainStyledAttributes( attrs, R.styleable.PieChart, 0, 0); try { mShowText = a.getBoolean(R.styleable.PieChart_showText, false); textPos = a.getInteger(R.styleable.PieChart_labelPosition, 0); } finally { a.recycle(); } }
يُرجى العلم أنّ TypedArray
عنصر
مصدر مشترك
ويجب إعادة تدويره بعد الاستخدام.
إضافة مواقع وأحداث
السمات هي طريقة فعالة للتحكم في سلوك ومظهر المشاهدات، ولكن
لا يمكن قراءتها إلا
عند تهيئة العرض. لتوفير سلوك ديناميكي، يجب كشف دالة getter
زوج محدد لكل منها
مخصصة. يوضِّح المقتطف التالي كيفية عرض PieChart
للسمة.
تسمى showText
:
Kotlin
fun isShowText(): Boolean { return mShowText } fun setShowText(showText: Boolean) { mShowText = showText invalidate() requestLayout() }
Java
public boolean isShowText() { return mShowText; } public void setShowText(boolean showText) { mShowText = showText; invalidate(); requestLayout(); }
إشعار أنّ "setShowText
" يتصل بـ "invalidate()
"
وrequestLayout()
. تُعد هذه المكالمات بالغة الأهمية
للتأكد من أن طريقة العرض تعمل بشكل موثوق. أنت بحاجة إلى
لإلغاء صلاحية الملف الشخصي بعد أي تغيير في خصائصه قد يؤدي إلى تغيير
المظهر، بحيث
يعرف النظام أنه ينبغي إعادة رسمه. وبالمثل، يجب طلب تنسيق جديد إذا
تغيير الموقع بطريقة
قد تؤثر في حجم العرض أو شكله. قد يؤدي تجاهل استدعاءات الطرق هذه إلى
يصعب العثور عليه
الأخطاء.
يجب أيضًا أن تدعم طرق العرض المخصّصة أدوات معالجة الأحداث للتواصل مع الأحداث المهمة. بالنسبة
مثال: PieChart
تعرض حدثًا مخصَّصًا يسمى OnCurrentItemChanged
لإعلام المستمعين
قام المستخدم بتدوير
مخطط دائري للتركيز على شريحة دائرية جديدة.
من السهل أن تنسى عرض المواقع والأحداث، خاصةً عندما تكون المستخدِم الوحيد. طريقة العرض المخصّصة إن تخصيص بعض الوقت لتحديد واجهة العرض بعناية يقلل من أعمال الصيانة المستقبلية للتصنيف الخاطئ. من القواعد الجيدة التي يجب اتباعها الكشف دائمًا عن أي خاصية تؤثر على النطاق المرئي مظهر أو سلوك طريقة العرض المخصصة الخاصة بك.
مراعاة تسهيل الاستخدام عند تصميم الموقع الإلكتروني
يجب أن يدعم طريقة العرض المخصّصة مجموعة كبيرة من المستخدمين. وهذا يشمل المستخدمين الذين لديهم من ذوي الاحتياجات الخاصة وتمنعه من رؤية الشاشة التي تعمل باللمس أو استخدامها. لمساعدة المستخدمين من ذوي الاحتياجات الخاصة، قم بما يلي:
- تصنيف حقول الإدخال باستخدام
android:contentDescription
. - يمكنك إرسال أحداث تسهيل الاستخدام من خلال الاتصال بالرقم
sendAccessibilityEvent()
. عندما يكون ذلك مناسبًا. - دعم وحدات التحكم البديلة، مثل لوحة التحكّم أو كرة التعقب.
لمزيد من المعلومات حول إنشاء طرق عرض يمكن الوصول إليها، راجع تسهيل الوصول إلى التطبيقات