2011-05-06 80 views
3

朋友,如何根据屏幕分辨率缩放图像?

我使用下面的代码resizeImage

private Bitmap resizeImage(final Bitmap image) { 
     Bitmap resizedImage = null; 
     if(image != null) 
     { 
     int maxHeight = 80; //actual image height coming from internet 
     int maxWidth = 150; //actual image width coming from internet 

     int imageHeight = image.getHeight(); 
     if (imageHeight > maxHeight) 
     imageHeight = maxHeight; 
     int imageWidth = (imageHeight*image.getWidth())/image.getHeight(); 
     if (imageWidth > maxWidth) { 
     imageWidth = maxWidth; 
     imageHeight = (imageWidth*image.getHeight())/image.getWidth(); 
     } 
     resizedImage = Bitmap.createScaledBitmap(image, imageWidth, imageHeight, true); 
     } 
     return resizedImage; 
     } 

来自互联网的到来。 现在它在高分辨率屏幕上工作正常,但在小屏幕上它没有任何人指导我该如何根据屏幕分辨率显示图像?

+0

背后是什么计算imageHeigt和imageWidth逻辑??其实我在我的代码中使用你的逻辑,但是当我在我的Galaxy 10.1上运行它时,图像变得更小了.. – User42590 2013-01-01 08:27:02

回答

3
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
int screenWidth = display.getWidth(); 
int screenHeight = display.getHeight(); 

因此,您可以根据屏幕分辨率显示图像。

+0

我面临着同样的问题,我无法正确获取屏幕宽度和高度如何使用..如果可以请分享一些更多的代码给你的答案... – Sam 2012-11-07 05:57:23

+0

我们接下来要做的事..这是真正的问题..如何设置图像符合上述计算的大小? – 2013-05-15 05:30:18

+0

以及它可能是你的问题,但人问这个问题已经知道下一步该怎么做。这里你去resizedImage = Bitmap.createScaledBitmap(image,imageWidth,imageHeight,true); – 2013-05-15 06:33:52

2

创建三种可绘制文件夹drawable-hdpi,drawable-mdpi,drawable-ldpi。在这些文件夹中放入具有相同名称的图像的差异分辨率。该应用程序将映射自己。另一种方法是创建9个补丁的图像。 9幅图像根据分辨率自行调整。并且在创建布局时还要小心。你必须正确设置布局。屏幕高度和宽度需要在屏幕的哪个部分设置图像。

由于 迪帕克

+0

这是正确的解决方案。无需自行调整大小,只需将图像放入正确的文件夹即可。 – async 2014-04-05 13:39:30