2013-02-05 78 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; 
     } 
相关问题