0

我使用onTouch在imageView中移动图像,但不幸的是它会移出屏幕。那么有没有更好的方法来控制如果图像边界触摸边框,那么我们可以阻止它移出?

4

1 回答 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 回答