استخدام مكبِّر نص

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

يتوفّر تطبيق "المكبِّر" المصغّر في نظام التشغيل Android 9 (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث، وهو عبارة عن عدسة مكبرة افتراضية تعرض نسخة كبيرة من View من خلال لوحة متراكبة تمثّل العدسة. تعمل الميزة على تحسين تجربة المستخدم إدراج النص وتحديده. عند تطبيق المكبِّر على النص، يمكن للمستخدم وضع المؤشر أو مقابض التحديد بدقة عن طريق عرض النص المكبَّر في الجزء الذي يلي إصبعه.

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

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

سبق أن تم دمج تطبيق "المكبِّر" مع أدوات النظام الأساسي، مثل TextView وEditText وWebView. وتوفّر معالجة متسقة للنصوص في جميع التطبيقات. التطبيق المصغّر يأتي مع واجهة برمجة تطبيقات بسيطة ويمكن استخدامه لتكبير أي View بناءً على سياق تطبيقك.

استخدام واجهة برمجة التطبيقات

يمكنك استخدام المكبِّر آليًا في عرض عشوائي على النحو التالي:

Kotlin

val view: View = findViewById(R.id.view)
val magnifier = Magnifier.Builder(view).build()
magnifier.show(view.width / 2.0f, view.height / 2.0f)

Java

View view = findViewById(R.id.view);
Magnifier magnifier = new Magnifier.Builder(view).build();
magnifier.show(view.getWidth() / 2, view.getHeight() / 2);

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

يوضح مقتطف الرمز التالي كيفية تغيير خلفية العرض المكبَّر:

Kotlin

view.setBackgroundColor(...)

Java

view.setBackgroundColor(...);

وبافتراض أن لون الخلفية مرئي داخل المكبِّر، فإن محتوى المكبِّر قديم كمنطقة عرض ذات خلفية قديمة لا تزال تُعرض. لإعادة تحميل المحتوى، استخدِم طريقة update() على النحو التالي:

Kotlin

view.post { magnifier.update() }

Java

view.post(magnifier::update);

عند الانتهاء، أغلِق المكبّر من خلال طلب طريقة dismiss():

Kotlin

magnifier.dismiss()

Java

magnifier.dismiss();

التكبير عند تفاعل المستخدم

تتمثل إحدى حالات الاستخدام الشائعة للمكبِّر في السماح للمستخدم بتكبير منطقة العرض عن طريق لمسها، كما هو موضح في الشكل 2.

الشكل 2. يتبع المكبِّر لمسة المستخدم. ويتم تطبيقه على ViewGroup يحتوي على `ImageView` إلى اليسار وTextView على اليمين.

يمكنك إجراء ذلك عن طريق تحديث المكبِّر وفقًا لأحداث اللمس التي تم استلامها في العرض، كما يلي:

Kotlin

imageView.setOnTouchListener { v, event ->
  when (event.actionMasked) {
    MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE -> {
      val viewPosition = IntArray(2)
      v.getLocationOnScreen(viewPosition)
      magnifier.show(event.rawX - viewPosition[0], event.rawY - viewPosition[1])
    }
    MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_UP -> {
      magnifier.dismiss()
    }
  }
  true
}

Java

imageView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getActionMasked()) {
            case MotionEvent.ACTION_DOWN:
                // Fall through.
            case MotionEvent.ACTION_MOVE: {
                final int[] viewPosition = new int[2];
                v.getLocationOnScreen(viewPosition);
                magnifier.show(event.getRawX() - viewPosition[0],
                               event.getRawY() - viewPosition[1]);
                break;
            }
            case MotionEvent.ACTION_CANCEL:
                // Fall through.
            case MotionEvent.ACTION_UP: {
                magnifier.dismiss();
            }
        }
        return true;
    }
});

اعتبارات إضافية عند تكبير النص

بالنسبة إلى التطبيقات المصغّرة للنصوص على النظام الأساسي، من المهم فهم سلوكيات معيّنة للمكبِّر وتفعيل المكبِّر لعرض النص المخصّص بشكل متّسق عبر نظام Android الأساسي. فكِّر في النقاط التالية:

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