এই সতর্কতাটি উপস্থিত হয়েছে কারণ অ্যান্ড্রয়েড আপনার অ্যাপ্লিকেশনটি ব্যবহার করছেন এমন অন্ধ বা দৃষ্টি প্রতিবন্ধী ব্যক্তিদের সম্পর্কে ভাবতে মনে করিয়ে দিতে চায়। আমি আপনাকে পরামর্শ দিচ্ছি যে এটি কেমন তা সম্পর্কে দ্রুত পর্যালোচনা করার জন্য এই ভিডিওটি দেখুন ।
অ্যাক্সেসিবিলিটি পরিষেবাদির মাধ্যমে অন্ধ ব্যবহারকারীদের উপযুক্ত প্রতিক্রিয়া সরবরাহ করার জন্য মানক ইউআই ভিউ (যেমন Button
, TextView
ইত্যাদি) সমস্ত সেট আপ করা হয়েছে। আপনি যখন স্পর্শ ইভেন্টগুলি নিজে পরিচালনা করার চেষ্টা করেন, তখন আপনি সেই প্রতিক্রিয়াটি ভুলে যাওয়ার ঝুঁকিতে পড়বেন। এই হুঁশিয়ারি জন্য।
বিকল্প 1: একটি কাস্টম ভিউ তৈরি করুন
টাচ ইভেন্টগুলি পরিচালনা করা সাধারণত কাস্টম ভিউতে সম্পন্ন এমন কিছু। এই বিকল্পটি খুব দ্রুত খারিজ করবেন না। এটি আসলে এতটা কঠিন নয়। এখানে TextView
টাচের ইভেন্টগুলি পরিচালনা করতে ওভাররাইড হওয়া একটি সম্পূর্ণ উদাহরণ :
public class CustomTextView extends AppCompatTextView {
public CustomTextView(Context context) {
super(context);
}
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
return true;
case MotionEvent.ACTION_UP:
performClick();
return true;
}
return false;
}
// Because we call this from onTouchEvent, this code will be executed for both
// normal touch events and for when the system calls this using Accessibility
@Override
public boolean performClick() {
super.performClick();
doSomething();
return true;
}
private void doSomething() {
Toast.makeText(getContext(), "did something", Toast.LENGTH_SHORT).show();
}
}
তারপরে আপনি এটি কেবল এটির মতো ব্যবহার করবেন:
<com.example.myapp.CustomTextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="20dp"
android:text="Click me to do something"/>
দেখুন আমার অন্যান্য জবাব একটি কাস্টম দৃশ্য নির্মাণ সম্পর্কে আরো বিস্তারিত জানার জন্য।
বিকল্প 2: সতর্কতা নিঃশব্দ করা
অন্য সময় কেবল সতর্কবার্তাটি বন্ধ করে দেওয়া ভাল। উদাহরণস্বরূপ, আমি নিশ্চিত নই যে আপনি এটির জন্য কী করতে চান যার জন্য আপনার Button
স্পর্শ ইভেন্টগুলির প্রয়োজন। আপনি একটি কাস্টম বাটন করতে ছিল এবং বলা তাহলে performClick()
মধ্যে onTouchEvent
আমি কাস্টম জন্য উপরে করেনি TextView
, তাহলে এটি দুইবার প্রত্যেক সময় বলা পেতে কারণ Button
ইতিমধ্যে আহ্বান performClick()
।
এখানে কয়েকটি কারণ যা আপনি কেবল সতর্কতাটি চুপ করে রাখতে চাইতে পারেন:
- আপনার স্পর্শ ইভেন্টের সাথে আপনি যে কাজটি করছেন তা কেবল চাক্ষুষ। এটি আপনার অ্যাপ্লিকেশনটির আসল কাজকে প্রভাবিত করে না।
- আপনি শীতল হৃদয় এবং অন্ধদের জন্য বিশ্বের উন্নত জায়গা করার বিষয়ে চিন্তা করবেন না।
- উপরের বিকল্প 1 এ আমি আপনাকে যে কোডটি দিয়েছি তা অনুলিপি করে আটকানোতে আপনি খুব অলস।
সতর্কতা দমন করতে পদ্ধতির শুরুতে নিম্নলিখিত লাইনটি যুক্ত করুন:
@SuppressLint("ClickableViewAccessibility")
উদাহরণ স্বরূপ:
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button myButton = findViewById(R.id.my_button);
myButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return false;
}
});
}
ImageView
ভিউটিতে এটি কল করা হয়েছে তবে এতে ওভাররাইড করা হয় না তবে ক্লিকটি ক্লিক করুন যদি অনটচইভেন্টকে ওভাররাইড করে বা অনটচলিস্টেনার ব্যবহার করে এমন কোনও ভিউও পারফর্ম ক্লিককে প্রয়োগ করে না এবং ক্লিকগুলি সনাক্ত করার সময় এটি কল করে, দৃশ্যটি অ্যাক্সেসযোগ্যতার ক্রিয়াগুলি সঠিকভাবে পরিচালনা করতে পারে না। ক্লিক অ্যাকশনগুলি হ্যান্ডলিং যুক্তিটি আদর্শভাবে দেখুন # পারফরম্যান্সে স্থাপন করা উচিত কারণ কিছু অ্যাক্সেসিবিলিটি পরিষেবাদি সঞ্চালন ক্লিক করে যখন ক্লিক অ্যাকশন হয় should