Android 如何在setOnLongClickListener中获取x和y值?

Android 如何在setOnLongClickListener中获取x和y值?,android,Android,运行时我已更改背景图像(设置背景)。在图中,我使用Touch Listener执行了该操作。但就我而言,我需要对触摸事件采取另一项行动。为此,我需要继续进行长距离接触活动。请向我推荐其他想法。回答: imageButton.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick

运行时我已更改背景图像(设置背景)。在图中,我使用Touch Listener执行了该操作。但就我而言,我需要对触摸事件采取另一项行动。为此,我需要继续进行长距离接触活动。请向我推荐其他想法。

回答:

         imageButton.setOnLongClickListener(new OnLongClickListener() { 

                    @Override
                    public boolean onLongClick(View v) {
                        // TODO Auto-generated method stub
                        return false;
                    }
                });

您可以使用手势检测器,如下所示:


我相信在这种情况下,
onLongClick
实际上应该返回
true
,因为触摸事件应该被使用,所以可以在setonlongclicklister中获取运动事件。@scinofikshvaku如何在imageButton.setonlongclicklister中获取运动事件值?您可以使用
ev.getX()
ev.getX()获取值
MotionEvent.ACTION\u MOVE
无法在imageButton.setOnLongClickListener.not in long click使用
TouchLIstener中的
onTouchEvent
方法。此事件=事件;我必须在这里指定哪些细节。我在相对布局上使用imageView。我必须提供哪些细节来代替MapView.Provider ImageView对象'覆盖公共布尔onTouchEvent(MotionEvent事件,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))处理程序。removeCallbacks(长按);return onTouchEvent(event,btn);}显示@Override中的错误您需要为图像视图设置
TouchListener
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);
}
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);
};