private View.OnTouchListener shopCarSettleTouch = new View.OnTouchListener() { int lastX, lastY; @Override public boolean onTouch(View v, MotionEvent event) { int ea = event.getAction(); DisplayMetrics dm = getResources().getDisplayMetrics(); int screenWidth = dm.widthPixels; // int screenHeight = dm.heightPixels - 100;//需要减掉图片的高度 int screenHeight = dm.heightPixels;//需要减掉图片的高度 switch (ea) { case MotionEvent.ACTION_DOWN: lastX = (int) event.getRawX();//获取触摸事件触摸位置的原始X坐标 lastY = (int) event.getRawY(); case MotionEvent.ACTION_MOVE: //event.getRawX();获得移动的位置 int dx = (int) event.getRawX() - lastX; int dy = (int) event.getRawY() - lastY; int l = v.getLeft() + dx; int b = v.getBottom() + dy; int r = v.getRight() + dx; int t = v.getTop() + dy; //下面判断移动是否超出屏幕 if (l < 0) { l = 0; r = l + v.getWidth(); } if (t < 0) { t = 0; b = t + v.getHeight(); } if (r > screenWidth) { r = screenWidth; l = r - v.getWidth(); } if (b > screenHeight) { b = screenHeight; t = b - v.getHeight(); } v.layout(l, t, r, b); Log.e(TAG, "onTouch: " +l+"=="+t+"=="+r+"=="+b); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); v.postInvalidate(); break; case MotionEvent.ACTION_UP: break; } return true; }};
使用方法:
iv = (ImageView) findViewById(R.id.iv); iv.setOnTouchListener(shopCarSettleTouch);
android控件跟随手势滑动改变位置
最新推荐文章于 2022-10-30 13:23:55 发布