ব্যবহারকারীরা যখন স্টাইলাস ব্যবহার করে কোনও অ্যাপ আঁকেন, লেখেন বা ইন্টারঅ্যাক্ট করেন, তখন তারা কখনও কখনও তাদের হাতের তালু দিয়ে স্ক্রিন স্পর্শ করেন। সিস্টেমটি ঘটনাটিকে দুর্ঘটনাজনিত হাতের স্পর্শ হিসেবে শনাক্ত করার এবং বাতিল করার আগেই স্পর্শের ঘটনাটি আপনার অ্যাপে রিপোর্ট করা হতে পারে।
আপনার অ্যাপটিকে অবশ্যই বহিরাগত স্পর্শ ইভেন্টগুলি সনাক্ত করতে হবে এবং সেগুলি উপেক্ষা করতে হবে। অ্যান্ড্রয়েড 13 এবং উচ্চতর API স্তরগুলি অন্যান্য সমস্ত API স্তরের থেকে আলাদাভাবে পাম স্পর্শ নির্দেশ করে।
ফলাফল
আপনার অ্যাপটি অ্যান্ড্রয়েড ১৩ এবং উচ্চতর API স্তরে মাল্টি-পয়েন্টার ইভেন্টের জন্য এবং সমস্ত API স্তরে একক-পয়েন্টার ইভেন্টের জন্য পাম টাচ সনাক্ত করতে এবং প্রত্যাখ্যান করতে সক্ষম।
হাতের তালুর স্পর্শ শনাক্ত করুন এবং উপেক্ষা করুন
অ্যান্ড্রয়েড আপনার অ্যাপে একটি MotionEvent অবজেক্ট প্রেরণ করে একটি হাতের তালুর স্পর্শ বাতিল করে।
আপনার অ্যাপে পাঠানো
MotionEventঅবজেক্টগুলি পরীক্ষা করুন। ইভেন্টের বৈশিষ্ট্য (ক্রিয়া এবং পতাকা) নির্ধারণ করতেMotionEventAPI গুলি ব্যবহার করুন:- সিঙ্গেল-পয়েন্টার ইভেন্ট —
ACTION_CANCELচেক করুন। Android 13 এবং উচ্চতর ভার্সনে,FLAG_CANCELEDচেক করুন। - মাল্টি-পয়েন্টার ইভেন্ট — Android 13 এবং উচ্চতর সংস্করণে,
ACTION_POINTER_UPএবংFLAG_CANCELEDপরীক্ষা করুন।
- সিঙ্গেল-পয়েন্টার ইভেন্ট —
ACTION_CANCELএবংACTION_POINTER_UP/FLAG_CANCELEDবৈশিষ্ট্যযুক্ত গতি ইভেন্টগুলি উপেক্ষা করুন।
১. গতির ঘটনা বস্তু অর্জন করা
আপনার অ্যাপে একটি 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; });
৩. অঙ্গভঙ্গিটি পূর্বাবস্থায় ফেরান
হাতের তালুর স্পর্শ শনাক্ত করার পর, আপনি অঙ্গভঙ্গির অনস্ক্রিন প্রভাবগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন।
আপনার অ্যাপটিকে ব্যবহারকারীর ক্রিয়াকলাপের ইতিহাস রাখতে হবে যাতে হাতের তালু স্পর্শের মতো অনিচ্ছাকৃত ইনপুটগুলি পূর্বাবস্থায় ফেরানো যায়। ইতিহাস কীভাবে বজায় রাখা যায় তার একটি উদাহরণের জন্য, একটি অ্যান্ড্রয়েড অ্যাপ কোডল্যাবে এনহ্যান্স স্টাইলাস সাপোর্টে একটি মৌলিক অঙ্কন অ্যাপ বাস্তবায়ন দেখুন।
গুরুত্বপূর্ণ বিষয়সমূহ
-
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 স্তরের থেকে আলাদাভাবে পাম স্পর্শ নির্দেশ করে।
ফলাফল
আপনার অ্যাপটি অ্যান্ড্রয়েড ১৩ এবং উচ্চতর API স্তরে মাল্টি-পয়েন্টার ইভেন্টের জন্য এবং সমস্ত API স্তরে একক-পয়েন্টার ইভেন্টের জন্য পাম টাচ সনাক্ত করতে এবং প্রত্যাখ্যান করতে সক্ষম।
হাতের তালুর স্পর্শ শনাক্ত করুন এবং উপেক্ষা করুন
অ্যান্ড্রয়েড আপনার অ্যাপে একটি MotionEvent অবজেক্ট প্রেরণ করে একটি হাতের তালুর স্পর্শ বাতিল করে।
আপনার অ্যাপে পাঠানো
MotionEventঅবজেক্টগুলি পরীক্ষা করুন। ইভেন্টের বৈশিষ্ট্য (ক্রিয়া এবং পতাকা) নির্ধারণ করতেMotionEventAPI গুলি ব্যবহার করুন:- সিঙ্গেল-পয়েন্টার ইভেন্ট —
ACTION_CANCELচেক করুন। Android 13 এবং উচ্চতর ভার্সনে,FLAG_CANCELEDচেক করুন। - মাল্টি-পয়েন্টার ইভেন্ট — Android 13 এবং উচ্চতর সংস্করণে,
ACTION_POINTER_UPএবংFLAG_CANCELEDপরীক্ষা করুন।
- সিঙ্গেল-পয়েন্টার ইভেন্ট —
ACTION_CANCELএবংACTION_POINTER_UP/FLAG_CANCELEDবৈশিষ্ট্যযুক্ত গতি ইভেন্টগুলি উপেক্ষা করুন।
১. গতির ঘটনা বস্তু অর্জন করা
আপনার অ্যাপে একটি 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; });
৩. অঙ্গভঙ্গিটি পূর্বাবস্থায় ফেরান
হাতের তালুর স্পর্শ শনাক্ত করার পর, আপনি অঙ্গভঙ্গির অনস্ক্রিন প্রভাবগুলি পূর্বাবস্থায় ফিরিয়ে আনতে পারেন।
আপনার অ্যাপটিকে ব্যবহারকারীর ক্রিয়াকলাপের ইতিহাস রাখতে হবে যাতে হাতের তালু স্পর্শের মতো অনিচ্ছাকৃত ইনপুটগুলি পূর্বাবস্থায় ফেরানো যায়। ইতিহাস কীভাবে বজায় রাখা যায় তার একটি উদাহরণের জন্য, একটি অ্যান্ড্রয়েড অ্যাপ কোডল্যাবে এনহ্যান্স স্টাইলাস সাপোর্টে একটি মৌলিক অঙ্কন অ্যাপ বাস্তবায়ন দেখুন।
গুরুত্বপূর্ণ বিষয়সমূহ
-
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ইভেন্টগুলিতে যোগ করা হয়েছে।
এই নির্দেশিকা ধারণকারী সংগ্রহগুলি
এই নির্দেশিকাটি এই কিউরেটেড কুইক গাইড সংগ্রহের অংশ যা বৃহত্তর অ্যান্ড্রয়েড ডেভেলপমেন্ট লক্ষ্যগুলিকে অন্তর্ভুক্ত করে:
