যখন ব্যবহারকারীরা একটি স্টাইলাস ব্যবহার করে একটি অ্যাপের সাথে আঁকেন, লেখেন বা ইন্টারঅ্যাক্ট করেন, তখন তারা মাঝে মাঝে তাদের হাতের তালু দিয়ে স্ক্রীন স্পর্শ করে। সিস্টেমটি দুর্ঘটনাজনিত পাম স্পর্শ হিসাবে ইভেন্টটিকে স্বীকৃতি এবং খারিজ করার আগে স্পর্শ ইভেন্টটি আপনার অ্যাপে রিপোর্ট করা হতে পারে।
তালুর স্পর্শ সনাক্ত করুন এবং উপেক্ষা করুন
আপনার অ্যাপটিকে অবশ্যই বহিরাগত স্পর্শ ইভেন্টগুলি সনাক্ত করতে হবে এবং সেগুলি উপেক্ষা করতে হবে৷ Android আপনার অ্যাপে একটি MotionEvent
অবজেক্ট পাঠানোর মাধ্যমে একটি পাম টাচ বাতিল করে।
আপনার অ্যাপে পাঠানো
MotionEvent
অবজেক্ট পরীক্ষা করুন। ইভেন্ট বৈশিষ্ট্য (ক্রিয়া এবং পতাকা) নির্ধারণ করতেMotionEvent
API ব্যবহার করুন:- একক-পয়েন্টার ইভেন্ট —
ACTION_CANCEL
চেক করুন। Android 13 এবং উচ্চতর তে,FLAG_CANCELED
এর জন্যও পরীক্ষা করুন। - মাল্টি-পয়েন্টার ইভেন্ট — Android 13 এবং উচ্চতর,
ACTION_POINTER_UP
এবংFLAG_CANCELED
চেক করুন।
- একক-পয়েন্টার ইভেন্ট —
ACTION_CANCEL
এবংACTION_POINTER_UP
/FLAG_CANCELED
বৈশিষ্ট্য আছে এমন মোশন ইভেন্টগুলিকে উপেক্ষা করুন৷
1. গতি ঘটনা বস্তু অর্জন
আপনার অ্যাপে একটি OnTouchListener
যোগ করুন:
কোটলিন
val myView = findViewById<View>(R.id.myView).apply { setOnTouchListener { view, event -> // Process motion event. } }
জাভা
View myView = findViewById(R.id.myView); myView.setOnTouchListener( (view, event) -> { // Process motion event. });
2. ইভেন্ট অ্যাকশন এবং পতাকা নির্ধারণ করুন
ACTION_CANCEL
পরীক্ষা করুন, যা সমস্ত API স্তরে একটি একক-পয়েন্টার ইভেন্ট নির্দেশ করে৷ Android 13 এবং পরবর্তীতে, FLAG_CANCELED.
এর জন্য ACTION_POINTER_UP
চেক করুন৷
কোটলিন
val myView = findViewById<View>(R.id.myView).apply { setOnTouchListener { view, event -> when (event.actionMasked) { MotionEvent.ACTION_CANCEL -> { //Process canceled single-pointer motion event for all SDK versions. } MotionEvent.ACTION_POINTER_UP -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && (event.flags and MotionEvent.FLAG_CANCELED) == MotionEvent.FLAG_CANCELED) { //Process canceled multi-pointer motion event for Android 13 and higher. } } } true } }
জাভা
View myView = findViewById(R.id.myView); myView.setOnTouchListener( (view, event) -> { switch (event.getActionMasked()) { case MotionEvent.ACTION_CANCEL: // Process canceled single-pointer motion event for all SDK versions. case MotionEvent.ACTION_UP: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU && (event.getFlags() & MotionEvent.FLAG_CANCELED) == MotionEvent.FLAG_CANCELED) { //Process canceled multi-pointer motion event for Android 13 and higher. } } return true; });
3. অঙ্গভঙ্গি পূর্বাবস্থায় ফেরান৷
আপনি একটি পামের স্পর্শ সনাক্ত করার পরে, আপনি অঙ্গভঙ্গির অনস্ক্রিন প্রভাবগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন৷
আপনার অ্যাপটিকে অবশ্যই ব্যবহারকারীর ক্রিয়াকলাপের ইতিহাস রাখতে হবে যাতে তালুর স্পর্শের মতো অনিচ্ছাকৃত ইনপুটগুলি পূর্বাবস্থায় ফেরানো যায়। কীভাবে ইতিহাস বজায় রাখা যায় তার উদাহরণের জন্য, একটি Android অ্যাপ কোডল্যাবে স্টাইলাস সমর্থন বাড়াতে একটি মৌলিক অঙ্কন অ্যাপ্লিকেশন প্রয়োগ করুন দেখুন।
মূল পয়েন্ট
-
MotionEvent
: স্পর্শ এবং আন্দোলন ইভেন্ট প্রতিনিধিত্ব করে। একটি ইভেন্ট উপেক্ষা করা উচিত কিনা তা নির্ধারণ করার জন্য প্রয়োজনীয় তথ্য রয়েছে৷ -
OnTouchListener#onTouch()
:MotionEvent
অবজেক্টগুলি গ্রহণ করে। -
MotionEvent#getActionMasked()
: একটি মোশন ইভেন্টের সাথে যুক্ত ক্রিয়া দেখায়। -
ACTION_CANCEL
:MotionEvent
ধ্রুবক যা ইঙ্গিত করে যে একটি অঙ্গভঙ্গি পূর্বাবস্থায় ফেরানো উচিত৷ -
ACTION_POINTER_UP
:MotionEvent
ধ্রুবক যা নির্দেশ করে যে প্রথম পয়েন্টার ছাড়া অন্য একটি পয়েন্টার বেড়ে গেছে (অর্থাৎ, ডিভাইস স্ক্রিনের সাথে যোগাযোগ ত্যাগ করেছে)। -
FLAG_CANCELED
:MotionEvent
ধ্রুবক যা নির্দেশ করে যে পয়েন্টার উপরে যাওয়ার কারণে একটি অনিচ্ছাকৃত স্পর্শ ইভেন্ট হয়েছে। Android 13 (API স্তর 33) এবং উচ্চতরACTION_POINTER_UP
এবংACTION_CANCEL
ইভেন্টগুলিতে যোগ করা হয়েছে৷
ফলাফল
আপনার অ্যাপ এখন অ্যান্ড্রয়েড 13 এবং উচ্চতর API লেভেলে মাল্টি-পয়েন্টার ইভেন্টের জন্য এবং সমস্ত API লেভেলে একক-পয়েন্টার ইভেন্টের জন্য পাম টাচ সনাক্ত করতে এবং প্রত্যাখ্যান করতে পারে।
এই নির্দেশিকা ধারণকারী সংগ্রহ
এই নির্দেশিকাটি এই কিউরেট করা কুইক গাইড সংগ্রহের অংশ যা বৃহত্তর অ্যান্ড্রয়েড উন্নয়ন লক্ষ্যগুলি কভার করে: