টেক্সট ম্যাগনিফায়ার প্রয়োগ করা

Compose-এর মাধ্যমে চেষ্টা করুন
Jetpack Compose হল Android-এর জন্য সাজেস্ট করা UI টুলকিট। Compose-এ কীভাবে টেক্সট ব্যবহার করতে হয় তা জানুন।

Android 9 (API লেভেল 28) এবং তার পরবর্তী ভার্সনে উপলভ্য, ম্যাগনিফায়ার উইজেট হল একটি ভার্চুয়াল ম্যাগনিফাইং গ্লাস যা লেন্সের প্রতিনিধিত্বকারী ওভারলে পেনের মাধ্যমে View-এর একটি বড় কপি দেখায়। এই ফিচার টেক্সট যোগ করা ও বেছে নেওয়ার ক্ষেত্রে ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। টেক্সটে ম্যাগনিফায়ার প্রয়োগ করার সময়, ব্যবহারকারী তার আঙুল অনুসরণ করে এমন একটি প্যানে ম্যাগনিফাই করা টেক্সট দেখে কার্সর বা সিলেকশন হ্যান্ডেল সঠিকভাবে পজিশন করতে পারবেন।

ম্যাগনিফায়ার কীভাবে টেক্সট বেছে নিতে সাহায্য করে তা ছবি ১-এ দেখানো হয়েছে। ম্যাগনিফায়ার API টেক্সটের সাথে যুক্ত নয় এবং আপনি বিভিন্ন ক্ষেত্রে এই উইজেট ব্যবহার করতে পারবেন, যেমন ছোট টেক্সট পড়া বা ম্যাপে কোনও জায়গার নাম বড় করে দেখা।

ডানদিকের বেছে নেওয়ার হ্যান্ডেলটি ধরার পরে ম্যাগনিফায়ার কীভাবে দেখা যায় তা দেখানো একটি ছবি
ছবি ১. টেক্সট বড় করে দেখা হচ্ছে। ব্যবহারকারী ডানদিকের সিলেকশন হ্যান্ডেল টেনে আনলে, সঠিকভাবে প্লেসমেন্টে সাহায্য করার জন্য ম্যাগনিফায়ার পপ-আপ করে।

ম্যাগনিফায়ার আগে থেকেই প্ল্যাটফর্ম উইজেটের সাথে ইন্টিগ্রেট করা আছে, যেমন TextView, EditText এবং WebView। এটি বিভিন্ন অ্যাপ জুড়ে সামঞ্জস্যপূর্ণ টেক্সট ম্যানিপুলেশন প্রদান করে। উইজেটটি একটি সহজ API-এর সাথে আসে এবং আপনার অ্যাপের প্রসঙ্গের উপর নির্ভর করে যেকোনও View বড় করতে ব্যবহার করা যেতে পারে।

API ব্যবহার

আপনি নিম্নলিখিত উপায়ে ইচ্ছামতো ভিউতে প্রোগ্রাম্যাটিক্যালি ম্যাগনিফায়ার ব্যবহার করতে পারবেন:

Kotlin

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

জাভা

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

ভিউ হায়ারার্কিতে প্রথম লে-আউট আছে ধরে নিয়ে, ম্যাগনিফায়ার স্ক্রিনে দেখায় এবং ভিউয়ের মধ্যে প্রদত্ত কোঅর্ডিনেটে কেন্দ্র করে একটি অঞ্চল থাকে। কপি করা হচ্ছে এমন কন্টেন্টের কেন্দ্রবিন্দুর উপরে প্যানেলটি দেখা যায়। ব্যবহারকারী বাতিল না করা পর্যন্ত ম্যাগনিফায়ার অনির্দিষ্টকালের জন্য চালু থাকে।

নিম্নলিখিত কোড স্নিপেট থেকে জানা যায় যে কীভাবে বড় করে দেখার ব্যাকগ্রাউন্ড পরিবর্তন করতে হয়:

Kotlin

view.setBackgroundColor(...)

জাভা

view.setBackgroundColor(...);

ম্যাগনিফায়ারের মধ্যে ব্যাকগ্রাউন্ডের রঙ দেখা যাচ্ছে বলে ধরে নিয়ে, ম্যাগনিফায়ারের কন্টেন্ট বাসি, কারণ পুরনো ব্যাকগ্রাউন্ড সহ ভিউয়ের একটি অঞ্চল এখনও দেখাচ্ছে। কন্টেন্ট রিফ্রেশ করতে, update() পদ্ধতি ব্যবহার করুন, যেমন:

Kotlin

view.post { magnifier.update() }

জাভা

view.post(magnifier::update);

কাজ হয়ে গেলে, dismiss() মেথড কল করে ম্যাগনিফায়ার বন্ধ করুন:

Kotlin

magnifier.dismiss()

জাভা

magnifier.dismiss();

ব্যবহারকারীর ইন্টার‍্যাকশনে বড় করে দেখানো

ম্যাগনিফায়ারের একটি সাধারণ ব্যবহার হল, ব্যবহারকারীকে কোনও ভিউ অঞ্চল স্পর্শ করে সেটি বড় করে দেখার সুবিধা দেওয়া, যেমনটি চিত্র ২-এ দেখানো হয়েছে।

ছবি ২. ব্যবহারকারীর টাচ অনুযায়ী ম্যাগনিফায়ার কাজ করে। এটি এমন একটি 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
}

জাভা

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 প্ল্যাটফর্ম জুড়ে আপনার কাস্টম টেক্সট ভিউয়ের জন্য ম্যাগনিফায়ারকে ধারাবাহিকভাবে চালু করা গুরুত্বপূর্ণ। নিম্নলিখিত বিষয়গুলি বিবেচনা করুন:

  • ব্যবহারকারী ইনসার্শন বা সিলেকশন হ্যান্ডেল ধরলেই ম্যাগনিফায়ার সাথে সাথে ট্রিগার হয়।
  • ম্যাগনিফায়ার সবসময় ব্যবহারকারীর আঙুলকে অনুভূমিকভাবে অনুসরণ করে, যেখানে উল্লম্বভাবে এটি বর্তমান টেক্সট লাইনের কেন্দ্রে স্থির থাকে।
  • অনুভূমিকভাবে সরানোর সময়, ম্যাগনিফায়ার শুধুমাত্র বর্তমান লাইনের বাঁদিক ও ডানদিকের সীমার মধ্যে ঘোরে। এছাড়াও, ব্যবহারকারীর টাচ যখন এই সীমানা থেকে সরে যায় এবং টাচ ও সবচেয়ে কাছের সীমানার মধ্যে অনুভূমিক দূরত্ব ম্যাগনিফায়ার কন্টেন্টের আসল প্রস্থের অর্ধেকের চেয়ে বেশি হয়, তখন ম্যাগনিফায়ার বন্ধ হয়ে যায়, কারণ কার্সর আর ম্যাগনিফায়ারের মধ্যে দেখা যায় না।
  • টেক্সটের ফন্ট খুব বড় হলে ম্যাগনিফায়ার কখনও ট্রিগার হয় না। টেক্সটকে খুব বড় বলে বিবেচনা করা হয় যখন ফন্টের ডিসেন্ট এবং অ্যাসেন্টের মধ্যে পার্থক্য ম্যাগনিফায়ারে ফিট করা কন্টেন্টের উচ্চতার চেয়ে বেশি হয়। এই ক্ষেত্রে ম্যাগনিফায়ার ট্রিগার করলে কোনও লাভ হয় না।