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

ম্যাগনিফায়ারটি ইতিমধ্যেই TextView , EditText , এবং WebView মতো প্ল্যাটফর্ম উইজেটগুলির সাথে সমন্বিত করা আছে। এটি বিভিন্ন অ্যাপ জুড়ে সামঞ্জস্যপূর্ণ টেক্সট ম্যানিপুলেশন প্রদান করে। উইজেটটি একটি সহজ API সহ আসে এবং আপনার অ্যাপের প্রেক্ষাপটের উপর নির্ভর করে যেকোনো View ম্যাগনিফাই করতে ব্যবহার করা যেতে পারে।
এপিআই ব্যবহার
আপনি নিম্নলিখিত উপায়ে যেকোনো ভিউতে প্রোগ্রামগতভাবে ম্যাগনিফায়ার ব্যবহার করতে পারেন:
কোটলিন
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);
যদি ভিউ হায়ারার্কিতে প্রথম লেআউটটি থাকে, তাহলে ম্যাগনিফায়ারটি স্ক্রিনে প্রদর্শিত হয় এবং এতে ভিউ-এর মধ্যে প্রদত্ত স্থানাঙ্ককে কেন্দ্র করে একটি অঞ্চল থাকে। প্যানটি কপি করা হচ্ছে এমন কন্টেন্টের কেন্দ্রবিন্দুর উপরে প্রদর্শিত হয়। ব্যবহারকারী এটি বাতিল না করা পর্যন্ত ম্যাগনিফায়ারটি অনির্দিষ্টকালের জন্য থেকে যায়।
নিচের কোড স্নিপেটটিতে দেখানো হয়েছে কীভাবে বিবর্ধিত দৃশ্যের ব্যাকগ্রাউন্ড পরিবর্তন করতে হয়:
কোটলিন
view.setBackgroundColor(...)
জাভা
view.setBackgroundColor(...);
যদি ম্যাগনিফায়ারের মধ্যে ব্যাকগ্রাউন্ডের রঙ দেখা যায়, তাহলে ম্যাগনিফায়ারের কন্টেন্টটি পুরোনো হয়ে গেছে, কারণ ভিউয়ের একটি অংশে পুরোনো ব্যাকগ্রাউন্ডটি এখনও প্রদর্শিত হচ্ছে। কন্টেন্টটি রিফ্রেশ করতে, নিচের মতো করে update() মেথডটি ব্যবহার করুন:
কোটলিন
view.post { magnifier.update() }
জাভা
view.post(magnifier::update);
কাজ শেষ হলে, dismiss() মেথডটি কল করে ম্যাগনিফায়ারটি বন্ধ করুন:
কোটলিন
magnifier.dismiss()
জাভা
magnifier.dismiss();
ব্যবহারকারীর মিথস্ক্রিয়াকে আরও গুরুত্ব দিন
ম্যাগনিফায়ারের একটি সাধারণ ব্যবহার হলো ব্যবহারকারীকে স্পর্শের মাধ্যমে কোনো দৃশ্যাঞ্চল বড় করার সুযোগ দেওয়া, যেমনটি চিত্র ২-এ দেখানো হয়েছে।
ViewGroup এ প্রয়োগ করা হয়েছে, যার বাম দিকে একটি `ImageView` এবং ডান দিকে একটি TextView রয়েছে।ভিউ দ্বারা প্রাপ্ত টাচ ইভেন্ট অনুযায়ী ম্যাগনিফায়ার আপডেট করার মাধ্যমে আপনি এটি করতে পারেন, যেভাবে নিচে দেখানো হয়েছে:
কোটলিন
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; } });
লেখা বড় করার সময় অতিরিক্ত বিবেচ্য বিষয়সমূহ
প্ল্যাটফর্ম টেক্সট উইজেটগুলোর ক্ষেত্রে, ম্যাগনিফায়ারের নির্দিষ্ট আচরণগুলো বোঝা এবং অ্যান্ড্রয়েড প্ল্যাটফর্ম জুড়ে আপনার কাস্টম টেক্সট ভিউতে ম্যাগনিফায়ারটি ধারাবাহিকভাবে সক্রিয় করা গুরুত্বপূর্ণ। নিম্নলিখিত বিষয়গুলো বিবেচনা করুন:
- ব্যবহারকারী যখন কোনো ইনসারশন বা সিলেকশন হ্যান্ডেল ধরেন, তখন ম্যাগনিফায়ারটি সঙ্গে সঙ্গে সক্রিয় হয়ে ওঠে।
- ম্যাগনিফায়ারটি আনুভূমিকভাবে সর্বদা ব্যবহারকারীর আঙুলকে মসৃণভাবে অনুসরণ করে, অপরদিকে এটি বর্তমান টেক্সট লাইনের কেন্দ্রে স্থির থাকে।
- অনুভূমিকভাবে সরানোর সময়, ম্যাগনিফায়ারটি কেবল বর্তমান লাইনের বাম এবং ডান সীমার মধ্যেই চলাচল করে। অধিকন্তু, যখন ব্যবহারকারীর স্পর্শ এই সীমাগুলো অতিক্রম করে এবং স্পর্শ ও নিকটতম সীমার মধ্যে অনুভূমিক দূরত্ব ম্যাগনিফায়ারের বিষয়বস্তুর মূল প্রস্থের অর্ধেকের চেয়ে বেশি হয়, তখন ম্যাগনিফায়ারটি অদৃশ্য হয়ে যায়, কারণ কার্সরটি আর ম্যাগনিফায়ারের ভিতরে দেখা যায় না।
- টেক্সটের ফন্ট খুব বড় হলে ম্যাগনিফায়ারটি কখনোই সক্রিয় হয় না। ফন্টের অবরোহণ এবং আরোহণের মধ্যকার পার্থক্য যখন ম্যাগনিফায়ারের মধ্যে থাকা বিষয়বস্তুর উচ্চতার চেয়ে বেশি হয়, তখন টেক্সটকে খুব বড় বলে গণ্য করা হয়। এই ক্ষেত্রে ম্যাগনিফায়ার সক্রিয় করলে কোনো বাড়তি সুবিধা হয় না।
