ImageView的touch事件

来源:互联网 发布:淘宝卡怎么办理 编辑:程序博客网 时间:2024/04/29 13:32
// 触摸事件:手指一挨着屏幕 手指移动 手指离开屏幕    iv_drag_view.setOnTouchListener(this);```@Overridepublic boolean onTouch(View v, MotionEvent event) {    switch (v.getId()) {    // 如果手机放在imageview上拖动    case R.id.iv_drag_view:        // 获取手指什么时候开始在x方向        switch (event.getAction()) {        case MotionEvent.ACTION_DOWN:            startx = (int) event.getRawX();// 获取手指第一次接触屏幕在x方向的坐标            starty = (int) event.getRawY();            break;        case MotionEvent.ACTION_MOVE:// 手机没有离开            int x = (int) event.getRawX();// 获取手指第一次接触屏幕在x方向的坐标            int y = (int) event.getRawY();           if (y<240) {          //    tv_drag_view设置在窗体的下面            tv_drag_view.layout(tv_drag_view.getLeft(), 260, tv_drag_view.getRight(), 280);          }else {               //   tv_drag_view设置在窗体的上面            tv_drag_view.layout(tv_drag_view.getLeft(), 60, tv_drag_view.getRight(), 80);           }            // 获取手指移动的距离            int dx = x - startx;            int dy = y - starty;            int l = iv_drag_view.getLeft();// 获取imageview的左边坐标            int t = iv_drag_view.getTop();            int r = iv_drag_view.getRight();            int b = iv_drag_view.getBottom();            iv_drag_view.layout(l + dx, t + dy, r + dx, b + dy);// 最后imageview左边位置是原始左边坐标加上移动的距离            startx = (int) event.getRawX();// 获取手指离开屏幕在x方向的坐标            starty = (int) event.getRawY();            break;        case MotionEvent.ACTION_UP:// 手机离开屏幕对应的事件            Log.i(TAG, "手指离开屏幕");            //当手指离开时就记录最后图片在窗体中的位置            int lastx=iv_drag_view.getTop();            int lasty=iv_drag_view.getLeft();            Editor editor=sp.edit();            editor.putInt("lastx", lastx);            editor.putInt("lasty", lasty);            editor.commit();            break;        }        break;    }    return true;// 不会中断触摸事件的返回}```
0 0