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控件跟随手势滑动改变位置
最新推荐文章于 2026-05-01 09:12:46 发布
本文介绍了一种在Android中实现视图拖动的方法。通过自定义OnTouchListener,可以捕捉并响应用户的触摸移动事件,使View组件能够在屏幕上平滑移动,并确保其不会移出屏幕边界。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

3000

被折叠的 条评论
为什么被折叠?



