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