我使用onTouch在imageView中移动图像,但不幸的是它会移出屏幕。那么有没有更好的方法来控制如果图像边界触摸边框,那么我们可以阻止它移出?
问问题
2003 次
1 回答
1
我很难理解你的问题。但是,如果我对您的问题的解释是正确的,那么您目前有一个可拖动的图像视图,并且您想确保图像的边框不会超出屏幕?阻止这种情况发生的唯一方法是检查图像边界是否超出屏幕。下面的代码不完整,它只会帮助你。finalHeight 和 finalWidth 现在将在屏幕上保存您的 imageView 的实际大小(即 imageview 中的实际图像大小)。
int windowwidth = getWindowManager().getDefaultDisplay().getWidth();
int windowheight = getWindowManager().getDefaultDisplay().getHeight();
final ImageView mImage= (ImageView)findViewById(R.id.mImage);
int finalHeight, finalWidth;
ViewTreeObserver vto = mImage.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
finalHeight = mImage.getMeasuredHeight();
finalWidth = mImage.getMeasuredWidth();
return true;
}
});
mImage.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
LayoutParams layoutParams = (LayoutParams) mImage.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int)event.getRawX();
int y_cord = (int)event.getRawY();
if(x_cord>windowwidth){x_cord=windowwidth;}
if(y_cord>windowheight){y_cord=windowheight;}
layoutParams.leftMargin = x_cord - 10; // Set these to co-responding values
layoutParams.topMargin = y_cord - 10; // Set these to co-responding values
mImage.setLayoutParams(layoutParams);
break;
default:
break;
}
return true;
}
});
这可能会对您有所帮助 =)
于 2012-12-19T08:46:08.613 回答