毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 移动平台 >> 正文

android下鼠标拖动图片的setOnTouchListener触发问题

更新时间:2013-3-1:  来源:毕业论文

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什么都没有添加,代码如下:

Java code?        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,你试试

这个问题我已经搞清楚了,主要是需要仔细研究事件在android组件中的传递,我这个问题确实是onTouch函数的返回值问题造成的,我每次都返回false,表示事件没有被处理,导致一直反复触发ACTION_DOWN,但是在android中,需要先触发ACTION_DOWN并且在ACTION_DOWN被处理了过后(返回true)ACTION_MOVE才有可能被触发,因此我的图片会出现拖不动的现象。

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。