অ্যান্ড্রয়েডে আমার স্পর্শ প্রারম্ভিক অবস্থান (এক্স, ওয়াই), টাচ মুভ অবস্থান এবং স্ক্রিনের শেষের অবস্থান পাওয়া দরকার।
উত্তর:
@Override
public boolean onTouchEvent(MotionEvent event)
{
int x = (int)event.getX();
int y = (int)event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_MOVE:
case MotionEvent.ACTION_UP:
}
return false;
}
তিনটি ক্ষেত্রে হ'ল যাতে আপনি বিভিন্ন ধরণের ইভেন্টের প্রতিক্রিয়া জানাতে পারেন, উদাহরণস্বরূপ এটিকে আলতো চাপতে বা টেনে আনতে বা আঙুলটি আবার তুলতে।
দেওয়া হয়েছে একটি OnTouchListener
private View.OnTouchListener handleTouch = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int x = (int) event.getX();
int y = (int) event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.i("TAG", "touched down");
break;
case MotionEvent.ACTION_MOVE:
Log.i("TAG", "moving: (" + x + ", " + y + ")");
break;
case MotionEvent.ACTION_UP:
Log.i("TAG", "touched up");
break;
}
return true;
}
};
কিছু ভিউ সেট করুন:
myView.setOnTouchListener(handleTouch);
এটি আপনাকে স্পর্শ ইভেন্টের সাথে সম্পর্কিত সেই তুলনায় স্পর্শ ইভেন্টের স্থানাঙ্ক দেয়। দৃশ্য উপরের বাঁদিকের কোণায় হয় (0, 0)। যদি আপনি নিজের আঙুলটি ভিউর উপরে রাখেন তবে yতা নেতিবাচক হবে। যদি আপনি নিজের আঙুলটি ভিউয়ের বাম দিকে সরান তবে xতা নেতিবাচক হবে।
int x = (int)event.getX();
int y = (int)event.getY();
আপনি যদি ডিভাইসের স্ক্রিনের উপরের বাম কোণার সাথে সম্পর্কিত স্থানাঙ্কগুলি চান তবে কাঁচা মানগুলি ব্যবহার করুন।
int x = (int)event.getRawX();
int y = (int)event.getRawY();
return falseঅন্যথায় এটি স্পর্শ গ্রাস করবে ভুলে যাবেন না ।
getRawX()এবং getRawY()শ্রোতার সাথে যুক্ত হওয়া কোনও দর্শনে স্পর্শ অবস্থানের নিখুঁত স্থানাঙ্কগুলি ফিরিয়ে দেওয়া উচিত। তবে আপনি ঠিক বলেছেন, যদি এর উপরে অন্য দৃষ্টিভঙ্গি উপস্থিত থাকে যা ফিরে আসে trueতবে কোনও নীচের মতামত স্পর্শ ইভেন্ট সম্পর্কে অবহিত করা হবে না।
getX()এবং getY()ঠিক ঠিক কাজ করি (প্রয়োজন নেই getRawX/Y())।
onInterceptTouchEventপারেন এবং তারপরে ফিরে আসতে পারেন falseযাতে ইভেন্টটি স্বাভাবিক হিসাবে প্রক্রিয়াজাত হয়।
এখানে কোল্টিন স্টাইলটি রয়েছে, আমি এটি আমার প্রকল্পে ব্যবহার করি এবং এটি খুব ভালভাবে কাজ করে:
this.yourview.setOnTouchListener(View.OnTouchListener { _, event ->
val x = event.x
val y = event.y
when(event.action) {
MotionEvent.ACTION_DOWN -> {
Log.d(TAG, "ACTION_DOWN \nx: $x\ny: $y")
}
MotionEvent.ACTION_MOVE -> {
Log.d(TAG, "ACTION_MOVE \nx: $x\ny: $y")
}
MotionEvent.ACTION_UP -> {
Log.d(TAG, "ACTION_UP \nx: $x\ny: $y")
}
}
return@OnTouchListener true
})