Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android: Measure/detect covered area by a finger touch on screen (NOT only touch coordinates)

I would like to get access to the area covered by a finger for each touch event on an Android.

Every touch event will result in a coordinate pair X and Y independent of how big the finger and consequently the touch area is that triggered the event.

I was wondering if there is a way to get the area data which triggered the touch event e.g. size or coordinates NOT

Any help is much appreciated.

Thanks in advance for you answer or redirects,

Christian

like image 210
chriz Avatar asked Aug 06 '10 09:08

chriz


People also ask

How to detect touch on screen Android?

Try code below to detect touch events. mView. setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //show dialog here return false; } }); To show dialog use Activity method showDialog(int).

In what way gestures are preferred than touch events?

 Gestures are scripted “solutions” that take advantage of these touch events.  So instead of tracking two touch points to determine if they're moving away or closer to one another in order to manipulate the size of a photo, you can just use GESTURE_ZOOM.


2 Answers

The method motionEvent.getSize() should give you what you want (but the level of accuracy may vary depending on the device's screen).

like image 165
oli Avatar answered Oct 17 '22 01:10

oli


You need to implement OnGestureListener.

First of all, you need to register GestureDetector in onTouchEvent

@Override
public boolean onTouchEvent(MotionEvent event) {
    mGestureDetector.onTouchEvent(event);
    return true;
}

In onShowPress you will get starting points

@Override
public void onShowPress(MotionEvent e) {
    startX = e.getX();
    startY = e.getY();
}

In onScroll you will get the end points.

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
        float distanceY) {
            endX = e2.getX();
            endY = e2.getY();
}
like image 28
Nishant Shah Avatar answered Oct 17 '22 00:10

Nishant Shah