تسهيل استخدام التطبيقات

حاوِل جعل تطبيق Android قابلاً للاستخدام من قِبل الجميع، بما في ذلك الأشخاص الذين لديهم احتياجات خاصة.

يستخدم الأشخاص الذين يعانون من ضعف البصر وعمى الألوان وضعف السمع وضعف المهارة والإعاقات الإدراكية والعديد من الإعاقات الأخرى أجهزة Android. عند تطوير تطبيقات مع مراعاة أدوات تسهيل الاستخدام، فإنك تجعل تجربة المستخدم أفضل للأشخاص ذوي الاحتياجات الخاصة.

تعرض هذه الصفحة إرشادات لتنفيذ العناصر الرئيسية لتسهيل الاستخدام حتى يتمكن الجميع من استخدام تطبيقك بسهولة أكبر. لمزيد من الإرشادات التفصيلية حول كيفية تسهيل استخدام تطبيقك، يُرجى الاطّلاع على مبادئ تحسين تسهيل استخدام التطبيقات.

زيادة مستوى ظهور النص

لكل مجموعة من النصوص داخل تطبيقك، ننصح بأن يكون تباين الألوان، أو الفرق في السطوع الملحوظ بين لون النص ولون الخلفية خلف النص، أعلى من حدّ معيّن. يعتمد الحدّ الأدنى الدقيق على حجم خط النص وما إذا كان النص يظهر بخط عريض:

  • إذا كان النص أصغر من 18 بكسل مستقل الكثافة، أو إذا كان النص غامقًا وأصغر من 14 بكسل مستقل الكثافة، استخدِم ألوان المقدّمة والخلفية التي ينتج عنها نسبة تباين ألوان لا تقل عن 4.5:1.
  • بالنسبة إلى جميع النصوص الأخرى، اضبط نسبة تباين الألوان على 3:1 على الأقل.

تعرض الصورة التالية مثالين على تباين لون النص مع الخلفية:

مثالان لكلمة "نص" على خلفيات ملوّنة يحتوي المثال الموجود على اليسار على تباين ألوان منخفض بين النص والخلفية، بينما يحتوي المثال الموجود على اليمين على تباين ألوان كافٍ.
الشكل 1: تباين ألوان أقل من الموصى به (على اليمين) وكافٍ (على اليسار).

للتحقّق من تباين لون النص مع الخلفية في تطبيقك، استخدِم أداة على الإنترنت للتحقّق من تباين الألوان أو تطبيق Accessibility Scanner.

استخدام عناصر تحكّم كبيرة وبسيطة

يسهل استخدام واجهة مستخدم تطبيقك إذا كان من السهل رؤية عناصر التحكّم والنقر عليها. بالنسبة إلى واجهات اللمس، ننصح بأن يكون لكل عنصر تفاعلي في واجهة المستخدم مساحة يمكن التركيز عليها، أو حجم مساحة لمس، لا يقل عن 48 بكسل مستقل الكثافة × 48 بكسل مستقل الكثافة. وكلما زاد حجمها، كان ذلك أفضل.

في Jetpack Compose، تفرض العديد من مكوّنات التصميم المتعدد الأبعاد المضمّنة، مثل Button وIconButton وListItem، هذا الحد الأدنى للحجم. ومع ذلك، عند إنشاء عناصر تفاعلية مخصّصة، عليك ضبط الحجم بنفسك.

في المقتطف التالي، يتم تسهيل استخدام عنصر صغير في واجهة المستخدم من خلال منحه مساحة لمس أكبر:

@Composable
private fun LargeBox() {
    var clicked by remember { mutableStateOf(false) }
    Box(
        Modifier
            .size(100.dp)
            .background(if (clicked) Color.DarkGray else Color.LightGray)
    ) {
        Box(
            Modifier
                .align(Alignment.Center)
                .clickable { clicked = !clicked }
                .background(Color.Black)
                .sizeIn(minWidth = 48.dp, minHeight = 48.dp)
        )
    }
}

لمزيد من المعلومات حول أحجام مساحات اللمس، يُرجى الاطّلاع على الحد الأدنى لأحجام مساحات اللمس.

وصف كل عنصر في واجهة المستخدم

لكل عنصر في واجهة المستخدم في تطبيقك، يجب تضمين وصف يوضّح الغرض من العنصر. في معظم الحالات، يمكنك تضمين هذا الوصف في سمة contentDescription للعنصر، كما هو موضّح في مقتطف الرمز التالي:

@Composable
private fun ShareButton(onClick: () -> Unit) {
    IconButton(onClick = onClick) {
        Icon(
            imageVector = Icons.Filled.Share,
            contentDescription = stringResource(R.string.label_share)
        )
    }
}

يُرجى العِلم أنّه ليس عليك تقديم contentDescription للدوال المركّبة Text. تعلن خدمات تسهيل الاستخدام في Android (مثل TalkBack) عن النص نفسه تلقائيًا.

عند إضافة أوصاف إلى عناصر واجهة المستخدم في تطبيقك، يُرجى مراعاة أفضل الممارسات التالية:

  • استخدِم الأوصاف لتوضيح الغرض من التفاعل ونتيجته، وليس التفاصيل المرئية. استخدِم سمة دلالات Role (مثل Role.Button أو Role.Switch) لعرض نوع عنصر في واجهة المستخدم. بهذه الطريقة، يمكن لبرامج قراءة الشاشة الإعلان عن العنصر بشكل صحيح.

  • تجنَّب التكرار في الأوصاف. على سبيل المثال، إذا كان النقر على زر يؤدي إلى تنفيذ إجراء "إرسال" في تطبيقك، اجعل وصف الزر "Submit"، وليس "Submit button".

  • يجب أن يكون كل وصف فريدًا. بهذه الطريقة، عندما يواجه مستخدمو قارئ الشاشة وصفًا متكررًا للعنصر، فإنهم يدركون بشكل صحيح أن التركيز ينصب على عنصر كان لديه تركيز في وقت سابق. على وجه الخصوص، يجب أن يكون لكل عنصر ضمن قائمة مثل LazyColumn وصف مختلف يعكس المحتوى الفريد لعنصر معيّن، مثل اسم مدينة في قائمة المواقع الجغرافية.

  • استخدِم واجهة برمجة التطبيقات hideFromAccessibility لوضع علامة على العناصر غير الضرورية كي تتجاهلها خدمات تسهيل الاستخدام. إذا كان عنصر واجهة المستخدم يحتوي على مَعلمة contentDescription ولكنه مخصّص للزينة فقط (مثل Icon الذي يشكّل جزءًا من عنصر في واجهة المستخدم آخر)، يجب تمرير null لتجنُّب التصنيف المتكرر. للاطّلاع على حالات استخدام أكثر تفصيلاً، يُرجى مراجعة الدمج والمحو.

  • اختبِر الرمز للتأكّد من عرض وصف المحتوى على النحو المتوقّع. يمكن لأداة Android Lint واختبار Compose وأدوات الاختبار اليدوية والآلية الإشارة إلى المشاكل الشائعة والكشف عن المشاكل في عملية التنفيذ.

مراجع إضافية

لمعرفة المزيد حول جعل تطبيقك أكثر سهولة في الوصول، راجع ما يلي موارد إضافية:

اختبارات الرموز

الفيديوهات

محتوى المشاهدات