2012-05-27 147 views
2

嗨,我正在加載圖像的應用程序,我正在尋找縮放每個圖像的最大可能的大小,例如,如果圖像是一個風景圖像(如果寬度較大比高度)我想拉伸的寬度來填補手機的寬度和縮放高度,以保持它的長寬比。如果高度大於寬度,即一幅肖像圖像,圖像應該縮放以適應手機的高度,然後調整寬度以保持縱橫比我有一些麻煩讓這個工作這裏是我的'至今已完成,儘管任何幫助將不勝感激。Android Scale圖像到最大尺寸

  final ImageView i = new ImageView(mContext); 
      i.setImageResource(mImageIds[position]); 
      i.setBackgroundResource(android.R.color.black); 
      //TODO need to get actual size of drawable not view size which is 0 
      ViewTreeObserver vto = i.getViewTreeObserver(); 
      vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
       public boolean onPreDraw() { 
        int w = i.getMeasuredWidth(); 
        int h = i.getMeasuredHeight(); 
        Display display = getWindowManager().getDefaultDisplay(); 
        int width = display.getWidth(); 
        int height = display.getHeight(); 
        if(w <= h){ 
         //TODO need to think about landscape 
         h = height - convertDpToPixel(50, context); 
         w = w*(width); 
        }else{ 
         h = h*(height); 
         w = width; 
        } 
        //TODO set imageview to w and h 

        return true; 
       } 
      }); 
+0

當你說你有麻煩讓你的代碼工作,什麼問題(S)有你有完全相同?異常拋出?圖像沒有按照你的預期重新調整? – Kerry

+0

Ru尋找這個http://stackoverflow.com/a/9478320/1012284 –

+0

我試圖使用位圖resizedbitmap和什麼不是和得到OOM錯誤,所以我更多的是,我應該如何設置圖像視圖到我的W和H – user577732

回答

1

用於獲取顯示寬度,高度

DisplayMetrics displaymetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    int height = displaymetrics.heightPixels; 
    int wwidth = displaymetrics.widthPixels; 

調整大小的ImageView

ImageView img=(ImageView)findViewById(R.id.ImageView01); 
Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01); 
Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true); 
img.setImageBitmap(resizedbitmap); 
+0

問題是我需要知道圖像尺寸是什麼,以便我可以保持不想扭曲它的寬高比 – user577732

1

將高度或寬度增加到最大值,具體取決於哪一個已經更大。

現在,讓我們說你有一個橫向圖像的工作:

你已經擴展了寬度它的最大尺寸,顯示器的寬度

您展開側是圖像的寬度,所以假設顯示寬度=寬度和圖像的寬度= W:

寬度/ W = R

以r將顯示寬度和所述圖像寬度之間的比率。現在你需要使用它來增加你的身高。

只需將高度乘以比率,然後將圖像的新高度設置爲結果數字。

如果你最終得到了一幅肖像圖像...嗯,我想你可以弄明白。這幾乎是一回事。

畢竟,我認爲這只是將圖像定位在屏幕中心的問題。