我的应用程序通过HTTP从服务器加载图像并将其保存到文件中。然后我使用此代码获取Drawable并查看它:
File f=new File(path);
if(f.exists()) {
Bitmap bmp = BitmapFactory.decodeFile(f.getAbsolutePath());
if(bmp!=null) {
DisplayMetrics dm = m_activity.getResources().getDisplayMetrics();
bmp.setDensity(dm.densityDpi);
Drawable drawable=new BitmapDrawable(context.getResources(), bmp);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}
它在三星Galaxy S2上运行良好。但在三星Galaxy S4上这个图像太小了。例如:
在S2:
在S4:
我需要在具有各种显示分辨率的所有设备上均匀显示它。可能吗?如何实现这个?
答案 0 :(得分:1)
我想我可以帮助你。我自己也有同样的问题。您需要做的是找到这个新屏幕比旧屏幕大多少,首先获取设备的尺寸,然后将它们放入widthOfStandardDevice和heightOfStandardDevice.Ance你知道新屏幕比旧屏幕大了多少,你会制作两个乘数来乘以一切。您现在可以说将位图的大小设置为bitmap_width和bitmap_height。
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
height = displaymetrics.heightPixels;
width = displaymetrics.widthPixels;
float widthMultiplier = width/widthOfStandardDevice;
float heightMultiplier = height/heightOfStandardDevice;
int bitmap_width = (int)(600 * widthMultiplier);
int bitmap_height = (int)(800 * heightMultiplier);
答案 1 :(得分:1)
基本问题是分辨率较高的设备会使图像看起来更小。您需要按照设备分辨率按比例缩放“固有”大小。
一个好的解决方案(正如Sheldon建议的那样)是使用Scaled Bitmap:
答案 2 :(得分:1)