2013-02-05 55 views
1

我希望能夠根據屏幕大小縮放圖像。在一個正常的Java小程序,我會做類似下面的....如何根據寬度和高度像素在Android中縮放位圖?

int windowWidth = 1280; 
int windowHeight = 720; 

Image image; 

public void paint(Graphics g) 
{ 
    g.drawImage(image, x, y, windowWidth/4, windowHeight/16, null); 
} 

我一直在尋找了一段時間,我的一切似乎找到調高一些奇怪的結果的答案。從我閱讀的內容來看,我可能需要使用分辨率獨立像素來做些事情,但我不太確定。

我試圖避免的是不得不爲不同的屏幕密度創建一組全新的圖像和圖標。我上面展示的方法可用於調整桌面應用程序的大小而不會出現問題。

編輯:

這是我一直在使用Android中繪製的圖像內容。

Matrix matrix = new Matrix(); 
Bitmap image; 

Constuctor....() 
{ 
image = BitmapFactory.decodeResource(context.getResources(), R.drawable.play); 
} 

public void render(Canvas c) 
{ 
    c.drawBitmap(image, matrix, null); 
} 
+0

'Bitmap.createScaledBitmap()'或http://stackoverflow.com/questions/3331527/android-resize採取的寬度-a-大位圖文件到按比例輸出文件 – Arpit

回答

1

嗨看,我如果您正在使用的畫布得到畫布的寬度和高度貼scale bitmap

thsi問題。或者,如果你想擁有它正式的正常佈局,然後通過使用

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics); 
dispWidth=metrics.widthPixels; 
dispheight=metrics.heightPixels; 

得到的寬度和高度,然後根據你的要求,這樣的擴展我們的位圖。在此我必須有8個磚所以我通過與列數除以

 String strwidth=String.valueOf(((float)(bmp.getWidth())/NO_COLUMNS)); 
     if(strwidth.contains(".")) 
     { 
      scalebit=Bitmap.createScaledBitmap(bmp, (int)(Math.ceil(((float)bmp.getWidth())/NO_COLUMNS))*NO_COLUMNS, bmp.getHeight(), true); 
     } 
     else 
     { 
      scalebit=bmp; 
     } 
相關問題