2013-01-21 60 views
7

我創建了一個圖像庫,一切正常。要放大和移動圖像需要將矩陣圖像定位在圖像視圖的中心

ImgView.setScaleType (ImageView.ScaleType.MATRIX) 

,當我這樣做,我得到的圖像小,所以我調用的方法

scaleFactor = view.getWidth()/(float)view.getDrawable().getIntrinsicWidth(); 
matrix.setScale(scaleFactor, scaleFactor); 

所以千萬不要錯過圖像大小,但作爲你可以看到,圖像高於一切,需要留在屏幕的中心。

我想這

matrix.postTranslate((screen_width-image_width)/2, (screen_height-image_height)/2); 

,但不起作用。

有什麼想法?對不起,不插入圖片,但我不能因爲我的聲譽。 非常感謝你提前

+0

您是否試過指定軸心點? 'matrix.setScale(scaleFactor,scaleFactor,view.getWidth()/ 2,view.getHeight()/ 2);' –

+0

是的,我試過但沒有任何結果。圖片仍然沒有得到中間。謝謝你的回答。 – sergio

回答

15

好吧,我糾正錯誤,就不得不把下面的代碼行:

RectF drawableRect = new RectF(0, 0, image_width, image_height); 
RectF viewRect = new RectF(0, 0, screen_width, screen_height); 
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 

希望有人幫助,非常感謝你回答。

4
@Override 
public void onWindowFocusChanged(boolean hasFocus) { 

    super.onWindowFocusChanged(hasFocus); 

    screenWidth = layout.getWidth(); 
    screenHeight = layout.getHeight(); 

    Log.e("", "Image Width : " + imageWidth + " > " + imageHeight); 
    Log.e("", "screen Width : " + screenWidth + " > " + screenHeight); 

    RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight); 
    RectF viewRect = new RectF(0, 0, screenWidth, screenHeight); 
    matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER); 
    img.setImageMatrix(matrix); 
} 
+0

'img.setImageMatrix(矩陣)'是我的關鍵 –