يتوفّر تطبيق "المكبِّر" المصغّر في نظام التشغيل Android 9 (المستوى 28 من واجهة برمجة التطبيقات) والإصدارات الأحدث، وهو عبارة عن
عدسة مكبرة افتراضية تعرض نسخة كبيرة من View
من خلال
لوحة متراكبة تمثّل العدسة. تعمل الميزة على تحسين تجربة المستخدم
إدراج النص وتحديده. عند تطبيق المكبِّر على النص، يمكن للمستخدم وضع المؤشر أو مقابض التحديد بدقة عن طريق عرض النص المكبَّر في الجزء الذي يلي إصبعه.
يوضح الشكل 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.
يمكنك إجراء ذلك عن طريق تحديث المكبِّر وفقًا لأحداث اللمس التي تم استلامها في العرض، كما يلي:
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 الأساسي. فكِّر في النقاط التالية:
- يتم تشغيل المكبّر فورًا عندما يمسك المستخدم مقبض إدراج أو تحديد.
- يتبع المكبّر دائمًا إصبع المستخدم أفقيًا بشكل سلس، بينما يتم تثبيته رأسيًا في وسط سطر النص الحالي.
- عند التحرك أفقيًا، يتحرك المكبِّر فقط بين الحدود اليسرى واليمنى للخط الحالي. علاوة على ذلك، عندما تترك لمسة المستخدم هذه الحدود وتكون المسافة الأفقية بين اللمس والأقرب أكبر من نصف العرض الأصلي لمحتوى المكبِّر، يتم تجاهل المكبّر، لأن المؤشر لم يعُد مرئيًا داخل تطبيق المكبِّر.
- لا يتم تشغيل المكبِّر مطلقًا عندما يكون خط النص كبيرًا جدًا. يتم اعتبار النص كبيرًا جدًا عندما يكون الفرق بين انحدار الخط وصعوده أكبر من ارتفاع المحتوى الذي يناسب المكبّر. ولا يؤدي تشغيل المكبِّر في هذه الحالة إلى إضافة قيمة.