2012-12-19 16 views
0

我使用onTouch在imageView中移動圖像,但不幸的是它會移出屏幕。因此,如果圖像邊界觸及邊界,是否有更好的方法來控制,那麼我們可以阻止它移出?如何控制圖像不要從imageView中移出?

+0

你用什麼代碼將圖像移動的ImageView裏面? – Zzokk

+0

我也有同樣的問題,你怎麼處理這個請給我一個樣本 – nitesh

回答

1

我很難理解你的問題。但是如果我已經解釋了你的問題是正確的,你現在有一個可拖動的圖像視圖,你想確保圖像的邊界不會超出屏幕?阻止這種情況發生的唯一方法是檢查圖像邊界是否超出屏幕。下面的代碼不完整,它只會幫助你。 finalHeight和finalWidth現在將在屏幕上保存您的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; 
       } 
     }); 

這可以幫助你在路上=)

+0

對不起我的可憐的英文,我不想移動imageView,我想拖動imageView中的drawable.Thanks很多,我用drawable的矩形解決了它 – gushedaoren

相關問題