2

Run Time I have change the background image(set background). In the image, I have perform the action using Touch Listener. But in my case, I need another action on Touch event. For that purpose I need to proceed with long touch event. Suggest me, any other idea.

Ed Holloway-George
  • 5,092
  • 2
  • 37
  • 66

2 Answers2

2

Answering from here:

final Handler handler = new Handler(); 
Runnable mLongPressed = new Runnable() { 
    public void run() { 
        Log.i("", "Long press!");
        if(myEvent!=null)
        {
           int requiredXvalue=myEvent.getX();               
           int requiredYvalue=myEvent.getY();

        }
    }   
};
MotionEvent myEvent;
@Override
public boolean onTouchEvent(MotionEvent event, MapView mapView){
    if(event.getAction() == MotionEvent.ACTION_DOWN)
    {
        handler.postDelayed(mLongPressed, 1000);
        myEvent=event;
    }
    if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP))
        handler.removeCallbacks(mLongPressed);
    return super.onTouchEvent(event, mapView);
}

OR

you can use Gesture Detector as answered here:

final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
    public void onLongPress(MotionEvent e) {
        Log.e("", "Longpress detected");
        int requiredXvalue=e.getX();               
        int requiredYvalue=e.getY();
    }
});

public boolean onTouchEvent(MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
};
Community
  • 1
  • 1
Amrut Bidri
  • 6,276
  • 6
  • 38
  • 80
  • this.event=event; which detail I have to assign here. – Mercy Angel May 06 '15 at 07:36
  • Am using imageView on relative Layout. Which detail I have to provide instead of MapView. – Mercy Angel May 07 '15 at 05:06
  • provide ImageView object – Amrut Bidri May 07 '15 at 05:55
  • 'Override public boolean onTouchEvent(MotionEvent event, ImageView btn) { if(event.getAction() == MotionEvent.ACTION_DOWN) { handler.postDelayed(mLongPressed, 1000); myevent=event; } if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP)) handler.removeCallbacks(mLongPressed); return onTouchEvent(event,btn); }' Shows the error in @Override – Mercy Angel May 07 '15 at 06:24
  • you need to set a `TouchListener` for your image view – Amrut Bidri May 07 '15 at 07:03
  • http://stackoverflow.com/questions/29014212/how-to-place-pin-mark-image-over-an-image-in-android am searching result for that. here am loading 1st image in relative layout(setting as background image) – Mercy Angel May 07 '15 at 07:49
  • Next step Overlay another imageView(Mark) during the onTouch. In my case, I need onTouch to perform Zoom and longTouch to place the imageView. After placing the imageView, Performing the action. – Mercy Angel May 07 '15 at 07:55
  • I have tried your code. Both actions performed in onTouch itself. – Mercy Angel May 07 '15 at 08:11
  • can I able to set onLongPress for particular layout(Relative Layout) in a Activity – reegan29 May 12 '15 at 13:40
0
         imageButton.setOnLongClickListener(new OnLongClickListener() { 

                    @Override
                    public boolean onLongClick(View v) {
                        // TODO Auto-generated method stub
                        return false;
                    }
                });
Don Chakkappan
  • 7,397
  • 5
  • 44
  • 59