আপনার Android অ্যাপটি অ্যাক্সেসিবিলিটি সংক্রান্ত প্রয়োজন আছে এমন ব্যক্তি সহ সকলের জন্য ব্যবহারযোগ্য করে তোলার চেষ্টা করুন।
দৃষ্টিশক্তিহীন, বর্ণান্ধ, শ্রবণশক্তিহীন, শারীরিক অক্ষমতা, কগনিটিভ অক্ষমতা এবং অন্যান্য অনেক অক্ষমতা সম্পন্ন ব্যক্তি Android ডিভাইস ব্যবহার করেন। অ্যাক্সেসিবিলিটির কথা মাথায় রেখে অ্যাপ ডেভেলপ করলে, অ্যাক্সেসিবিলিটি সংক্রান্ত প্রয়োজন আছে এমন ব্যক্তিদের জন্য ব্যবহারকারীর অভিজ্ঞতা আরও ভালো করে তুলতে পারবেন।
এই পৃষ্ঠায় অ্যাক্সেসিবিলিটির মূল এলিমেন্ট প্রয়োগ করার নির্দেশিকা দেওয়া আছে যাতে প্রত্যেকে আপনার অ্যাপ আরও সহজে ব্যবহার করতে পারেন। আপনার অ্যাপকে কীভাবে আরও অ্যাক্সেসযোগ্য করে তুলবেন সেই সম্পর্কে আরও বিস্তারিত নির্দেশিকার জন্য, অ্যাপের অ্যাক্সেসিবিলিটি উন্নত করার নীতি দেখুন।
টেক্সটের দৃশ্যমানতা বাড়ান
আপনার অ্যাপের মধ্যে প্রতিটি টেক্সট সেটের জন্য, আমরা কালার কনট্রাস্ট—বা টেক্সটের রঙ এবং টেক্সটের পিছনে ব্যাকগ্রাউন্ডের রঙের মধ্যে অনুভূত উজ্জ্বলতার পার্থক্য—একটি নির্দিষ্ট থ্রেশহোল্ডের উপরে রাখার সাজেশন দিই। সঠিক থ্রেশহোল্ড টেক্সটের ফন্ট সাইজ এবং টেক্সট বোল্ডে দেখানো হয়েছে কিনা তার উপর নির্ভর করে:
- টেক্সট ১৮sp-এর থেকে ছোট হলে অথবা টেক্সট বোল্ড এবং ১৪sp-এর থেকে ছোট হলে, এমন ফোরগ্রাউন্ড এবং ব্যাকগ্রাউন্ড কালার ব্যবহার করুন যাতে কালার কনট্রাস্ট রেশিও অন্তত ৪.৫:১ হয়।
- অন্য সব টেক্সটের জন্য, কালার কনট্রাস্ট রেশিও কমপক্ষে ৩:১ হিসেবে সেট করুন।
নিচের ছবিতে টেক্সট-টু-ব্যাকগ্রাউন্ড কালার কনট্রাস্টের দুটি উদাহরণ দেখানো হয়েছে:
আপনার অ্যাপে টেক্সট-টু-ব্যাকগ্রাউন্ড কালার কনট্রাস্ট চেক করতে, অনলাইন কালার কনট্রাস্ট চেকার বা অ্যাক্সেসিবিলিটি স্ক্যানার অ্যাপ ব্যবহার করুন।
বড়, সহজ কন্ট্রোল ব্যবহার করুন
আপনার অ্যাপের UI-এর কন্ট্রোলগুলি সহজে দেখা ও ট্যাপ করা গেলে, UI ব্যবহার করা আরও সহজ হয়। টাচ ইন্টারফেসের জন্য, আমরা সাজেস্ট করি যে প্রতিটি ইন্টার্যাক্টিভ UI এলিমেন্টের একটি ফোকাস করার মতো এলাকা বা টাচ টার্গেটের সাইজ, কমপক্ষে ৪৮dpx৪৮dp হতে হবে। আরও বড় হলে আরও ভালো।
Jetpack Compose-এ, Button,
IconButton এবং ListItem-এর মতো অনেক বিল্ট-ইন মেটেরিয়াল কম্পোনেন্ট আগে থেকেই এই ন্যূনতম সাইজ এনফোর্স করে। তবে, কাস্টম ইন্টারঅ্যাকটিভ এলিমেন্ট তৈরি করার সময়, আপনাকে নিজেই সাইজ সেট করতে হবে।
নিম্নলিখিত স্নিপেটে, একটি ছোট UI এলিমেন্টকে আরও বড় টাচ টার্গেট দিয়ে অ্যাক্সেসযোগ্য করা হয়েছে:
@Composable private fun LargeBox() { var clicked by remember { mutableStateOf(false) } Box( Modifier .size(100.dp) .background(if (clicked) Color.DarkGray else Color.LightGray) ) { Box( Modifier .align(Alignment.Center) .clickable { clicked = !clicked } .background(Color.Black) .sizeIn(minWidth = 48.dp, minHeight = 48.dp) ) } }
টাচ টার্গেটের ন্যূনতম সাইজ দেখুন।
প্রতিটি UI এলিমেন্টের বিবরণ দিন
আপনার অ্যাপের প্রতিটি UI এলিমেন্টের জন্য, একটি বিবরণ অন্তর্ভুক্ত করুন যা
এলিমেন্টের উদ্দেশ্য বর্ণনা করে। বেশিরভাগ ক্ষেত্রে, আপনি এই বিবরণ এলিমেন্টের contentDescription অ্যাট্রিবিউটে অন্তর্ভুক্ত করেন, যেমনটি নিম্নলিখিত কোড স্নিপেটে দেখানো হয়েছে:
@Composable private fun ShareButton(onClick: () -> Unit) { IconButton(onClick = onClick) { Icon( imageVector = Icons.Filled.Share, contentDescription = stringResource(R.string.label_share) ) } }
মনে রাখবেন, Text কম্পোজেবলের জন্য আপনাকে contentDescription দিতে হবে না। Android অ্যাক্সেসিবিলিটি পরিষেবা (যেমন, টকব্যাক) অটোমেটিক
টেক্সট ঘোষণা করে।
আপনার অ্যাপের UI এলিমেন্টে বিবরণ যোগ করার সময়, নিম্নলিখিত পেশাদার পদ্ধতিগুলি মনে রাখবেন:
ইন্টার্যাকশনের উদ্দেশ্য ও ফলাফল বোঝাতে বিবরণ ব্যবহার করুন, ভিজ্যুয়াল বিবরণ নয়। UI এলিমেন্টের ধরন প্রকাশ করতে
Roleসিম্যান্টিক্স প্রপার্টি (যেমনRole.ButtonবাRole.Switch) ব্যবহার করুন। এইভাবে, স্ক্রিন রিডার এলিমেন্ট সঠিকভাবে ঘোষণা করতে পারে।বিবরণে অপ্রয়োজনীয় তথ্য দেওয়া এড়িয়ে চলুন। যেমন, কোনও বোতাম বেছে নিলে আপনার অ্যাপে "জমা দিন" অ্যাকশন হলে, বোতামের বিবরণে
"Submit"লিখুন,"Submit button"নয়।প্রতিটি বিবরণ অনন্য হতে হবে। এর ফলে, স্ক্রিন রিডার ব্যবহারকারীরা কোনও এলিমেন্টের বিবরণ বারবার শুনলে, তারা সঠিকভাবে বুঝতে পারেন যে ফোকাসটি এমন একটি এলিমেন্টে রয়েছে যা আগে থেকেই ফোকাস করা ছিল। বিশেষ করে,
LazyColumn-এর মতো তালিকার মধ্যে প্রতিটি আইটেমের আলাদা বিবরণ থাকা উচিত, প্রতিটি বিবরণ এমন কন্টেন্ট দেখাবে যা প্রদত্ত আইটেমের জন্য অনন্য, যেমন লোকেশনের তালিকায় কোনও শহরের নাম।hideFromAccessibilityAPI ব্যবহার করে শুধুমাত্র আলঙ্কারিক এলিমেন্ট চিহ্নিত করুন যাতে অ্যাক্সেসিবিলিটি পরিষেবা সেগুলি উপেক্ষা করতে পারে। কোনও UI এলিমেন্টেcontentDescriptionপ্যারামিটার থাকলে, কিন্তু সেটি শুধুমাত্র সাজানোর জন্য ব্যবহার করা হলে (যেমন,Iconযা অন্য UI এলিমেন্টের অংশ), অপ্রয়োজনীয় লেবেলিং এড়াতেnullপাস করুন। আরও বিস্তারিত ব্যবহারের উদাহরণের জন্য, মার্জ ও মুছে ফেলা দেখুন।কন্টেন্টের বিবরণ প্রত্যাশা অনুযায়ী দেখানো হচ্ছে কিনা তা নিশ্চিত করতে আপনার কোড পরীক্ষা করুন। Android Lint, Compose টেস্টিং এবং ম্যানুয়াল ও অটোমেটিক টেস্টিং টুল সাধারণ সমস্যা ফ্ল্যাগ করতে এবং আপনার ইমপ্লিমেন্টেশনে সমস্যা প্রকাশ করতে পারে।
অতিরিক্ত রিসোর্স
আপনার অ্যাপকে আরও অ্যাক্সেসযোগ্য করে তোলার ব্যাপারে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন: