首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android上鼠标拖动图片的setOnTouchListener触发有关问题

2013-03-01 
android下鼠标拖动图片的setOnTouchListener触发问题最近在做一个图片用鼠标拖动的小程序,用一个ImageView

android下鼠标拖动图片的setOnTouchListener触发问题
最近在做一个图片用鼠标拖动的小程序,用一个ImageView作为拖动对象,然后给这个对象添加setOnTouchListener监听,代码如下(iv_dragPicture为拖动对象):


iv_dragPicture.setOnTouchListener(new OnTouchListener() {

        int lastX,lastY;
/**
 * @param v
 * @param event
 * @return
 */
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub

int action=event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
lastX=(int) event.getRawX();
lastY=(int) event.getRawY();
//逐一判断类型
//for(int i=0;i<event.getPointerCount();i++){
//if(MotionEvent.TOOL_TYPE_MOUSE==event.getToolType(i)){
//
//}
//}
break;
case MotionEvent.ACTION_MOVE:
 //移动中动态设置位置
     int dx =(int)event.getRawX() - lastX;   
     int dy =(int)event.getRawY() - lastY;   
     int left = v.getLeft() + dx;   
     int top = v.getTop() + dy;   
     int right = v.getRight() + dx;   
     int bottom = v.getBottom() + dy;   
     if(left < 0){   
      left = 0;   
      right = left + v.getWidth();   
     }   
     if(right > screenWidth){   
      right = screenWidth;   
      left = right - v.getWidth();   
     }   
     if(top < 0){   
      top = 0;   
      bottom = top + v.getHeight();   
     }   
     if(bottom > screenHeight){   
      bottom = screenHeight;   
      top = bottom - v.getHeight();   
     }   
     v.layout(left, top, right, bottom);   
     lastX = (int) event.getRawX();   
     lastY = (int) event.getRawY();   
     
break;
default:
break;
}




return false;
}
});

我是准备在ACTION_MOVE分支当中重绘这个ImageView对象的坐标,但是这样在鼠标拖动的时候却始终不能进入ACTION_MOVE分支,但是奇怪的是,在我给iv_dragPicture设置setOnLongClickListener后,鼠标却可以拖动ImageView了,调试发现程序能够进入ACTION_MOVE分支执行,很纳闷,我的setOnLongClickListener什么都没有添加,代码如下:

        iv_dragPicture.setOnLongClickListener(new OnLongClickListener() {



public boolean onLongClick(View v) {
// TODO Auto-generated method stub
//Log.v("longClick","trigger");
return false;
}
});


哪位大神给解释一下这几个事件之间的关系,小弟在此谢过。同时,不知道各位平时都用什么方法来实现鼠标拖动图片的效果?我觉得我这个方法太不靠谱了。
[解决办法]
 return false;
刚随便改了一个参数,把false改成true,你试试

热点排行