android view超出屏幕_android-拖动Imageview时超出屏幕
时间: 2023-11-06 21:04:35 浏览: 47
当一个View超出屏幕时,你可以使用ScrollView或者HorizontalScrollView来解决这个问题。
如果你想拖动一个ImageView,并且希望它不会超出屏幕,你可以使用以下代码:
```java
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
// 手指按下时记录位置
lastX = event.getRawX();
lastY = event.getRawY();
break;
}
case MotionEvent.ACTION_MOVE: {
// 移动的距离
float dx = event.getRawX() - lastX;
float dy = event.getRawY() - lastY;
// 获取imageView的参数
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) v.getLayoutParams();
// 移动imageView
lp.leftMargin += dx;
lp.topMargin += dy;
// 确定imageView不会超出屏幕
int screenWidth = getResources().getDisplayMetrics().widthPixels;
int screenHeight = getResources().getDisplayMetrics().heightPixels;
if (lp.leftMargin < 0) {
lp.leftMargin = 0;
} else if (lp.leftMargin + v.getWidth() > screenWidth) {
lp.leftMargin = screenWidth - v.getWidth();
}
if (lp.topMargin < 0) {
lp.topMargin = 0;
} else if (lp.topMargin + v.getHeight() > screenHeight) {
lp.topMargin = screenHeight - v.getHeight();
}
// 重新设置imageView的参数
v.setLayoutParams(lp);
// 更新位置记录
lastX = event.getRawX();
lastY = event.getRawY();
break;
}
case MotionEvent.ACTION_UP: {
// 手指抬起时不需要做任何事情
break;
}
}
return true;
}
});
```
这个代码片段会允许你拖动ImageView,但是它不会被拖动超出屏幕。如果ImageView被拖动到了屏幕边缘,它会停在那里并且无法继续拖动。