首先配置程序:
<supports-screens android:resizeable="true" android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/>
然后代码中调用BitmapFactory.decodeResource(读取某个资源,
如果手机是MDPI,那么读出来的尺寸就和图片本身一样
如果手机是XHDPI,但是drawable-xhdpi下没有放这个文件,读出来的文件竟然是本来图片的两倍,似乎是安卓把drawable下的文件放大一倍后复制到了drawable文件夹
如果各个目录都没放图片,安卓自动得到文件尺寸比例如下
ldpi 120
普通 240
hdpi 360
xhdpi 480
要想在所有密度读出同样尺寸,就必须把所有图片都复制到对应密度的路径下吗?
否则代码竟然无法预料读出来的图片尺寸?其实可以的
BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inTargetDensity=nMyScaleTimes==1?DisplayMetrics.DENSITY_MEDIUM:DisplayMetrics.DENSITY_XHIGH; Bitmap bmp = BitmapFactory.decodeResource(m_Res, (Integer)ResUrl.getUrl(nResKey),opt);
上面代码中,nMyScaleTimes==1时图片不缩放,否则放大一倍,因为xdpi的尺寸刚好是medium的两倍,medium是不缩放
这样只用把原始图片放到drawable-mdpi就行了,drawable-xhdpi放不放都无所谓,放的话就放两倍大图,不用放原尺寸图