অ্যাপকে আরও অ্যাক্সেসযোগ্য করে তোলা

অ্যাক্সেসিবিলিটি সংক্রান্ত প্রয়োজনীয়তা আছে এমন ব্যক্তি সহ সকলের জন্য আপনার Android অ্যাপ ব্যবহারযোগ্য করে তোলার চেষ্টা করুন।

দৃষ্টিশক্তি, বর্ণান্ধতা, শ্রবণশক্তি, শারীরিক দক্ষতা, মানসিক প্রতিবন্ধকতা ও অন্যান্য প্রতিবন্ধকতা থাকা ব্যক্তিরা Android ডিভাইস ব্যবহার করেন। আপনি যখন অ্যাক্সেসিবিলিটির কথা মাথায় রেখে অ্যাপ ডেভেলপ করেন, তখন আপনি অ্যাক্সেসিবিলিটি সংক্রান্ত প্রয়োজনীয়তা থাকা ব্যক্তিদের জন্য ব্যবহারকারীর অভিজ্ঞতা আরও ভালো করে তোলেন।

এই পৃষ্ঠায় অ্যাক্সেসিবিলিটির মূল উপাদান প্রয়োগ করার নির্দেশিকা দেওয়া আছে যাতে সবাই আপনার অ্যাপ আরও সহজে ব্যবহার করতে পারেন। আপনার অ্যাপকে আরও অ্যাক্সেসযোগ্য করে তোলার বিষয়ে আরও বিশদে নির্দেশিকা পেতে, অ্যাপের অ্যাক্সেসিবিলিটি উন্নত করার নীতি দেখুন।

টেক্সটের দৃশ্যমানতা বাড়ানো

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

  • টেক্সট ১৮sp-এর থেকে ছোট হলে অথবা টেক্সট বোল্ড ও ১৪sp-এর থেকে ছোট হলে, ফোরগ্রাউন্ড ও ব্যাকগ্রাউন্ড কালার ব্যবহার করুন যার ফলে অন্তত ৪.৫:১ কালার কনট্রাস্ট রেশিও পাওয়া যায়।
  • অন্যান্য সব টেক্সটের জন্য, কালার কনট্রাস্ট রেশিও কমপক্ষে ৩:১ হিসেবে সেট করুন।

নিচের ছবিতে টেক্সট ও ব্যাকগ্রাউন্ডের রঙের কনট্রাস্টের দুটি উদাহরণ দেখানো হয়েছে:

রঙিন ব্যাকগ্রাউন্ডে 'টেক্সট' শব্দের দুটি উদাহরণ। বাঁদিকের উদাহরণে টেক্সট ও ব্যাকগ্রাউন্ডের মধ্যে কালার কনট্রাস্ট কম, তবে ডানদিকের উদাহরণে পর্যাপ্ত কালার কনট্রাস্ট আছে।
ছবি ১. সাজেস্ট করা কালার কনট্রাস্টের থেকে কম (বাঁদিকে) এবং পর্যাপ্ত (ডানদিকে)।

আপনার অ্যাপে টেক্সট ও ব্যাকগ্রাউন্ডের কালার কনট্রাস্ট চেক করতে, অনলাইন কালার কনট্রাস্ট চেকার বা অ্যাক্সেসিবিলিটি স্ক্যানার অ্যাপ ব্যবহার করুন।

বড় ও সহজ কন্ট্রোল ব্যবহার করা

আপনার অ্যাপের কন্ট্রোলগুলি সহজে দেখা ও ট্যাপ করা গেলে, অ্যাপের 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-এর মতো তালিকার মধ্যে থাকা প্রতিটি আইটেমের আলাদা আলাদা বিবরণ থাকতে হবে, প্রতিটি বিবরণ যেন কোনও আইটেমের অনন্য কন্টেন্টকে প্রতিফলিত করে, যেমন লোকেশনের তালিকায় কোনও শহরের নাম।

  • শুধুমাত্র সাজসজ্জার জন্য ব্যবহৃত এলিমেন্ট চিহ্নিত করতে hideFromAccessibility API ব্যবহার করুন, যাতে অ্যাক্সেসিবিলিটি পরিষেবা সেগুলি উপেক্ষা করতে পারে। কোনও UI এলিমেন্টে contentDescription প্যারামিটার থাকলেও সেটি যদি শুধুমাত্র সাজসজ্জার জন্য ব্যবহার করা হয় (যেমন, Icon যা অন্য UI এলিমেন্টের অংশ), তাহলে অতিরিক্ত লেবেলিং এড়াতে null পাস করুন। আরও বিস্তারিত ব্যবহারের ক্ষেত্রে, মার্জ করা ও মুছে দেওয়া দেখুন।

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

অতিরিক্ত রিসোর্স

আপনার অ্যাপকে আরও অ্যাক্সেসিবল করে তোলার ব্যাপারে আরও জানতে, নিম্নলিখিত অতিরিক্ত রিসোর্স দেখুন:

কোডল্যাবস

ভিডিও

কন্টেন্ট দেখা