إنشاء صف لطريقة العرض

تجربة طريقة ComposeAllowed
Jetpack Compose هي مجموعة أدوات واجهة المستخدم التي ننصح بها لنظام التشغيل Android. تعرَّف على كيفية استخدام التنسيقات في Compose.

تشبه طريقة العرض المخصّصة المصمّمة بشكل جيد أي فئة أخرى مصمّمة بشكل جيد. إنه يغلف مجموعة محددة من وظائف ذات واجهة بسيطة، ويستخدم وحدة المعالجة المركزية (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(). عندما يكون ذلك مناسبًا.
  • دعم وحدات التحكم البديلة، مثل لوحة التحكّم أو كرة التعقب.

لمزيد من المعلومات حول إنشاء طرق عرض يمكن الوصول إليها، راجع تسهيل الوصول إلى التطبيقات