drawable中密度对代码的影响

来源:互联网 发布:电信联通网络转换器 编辑:程序博客网 时间:2024/04/28 10:53

首先配置程序:

     <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放不放都无所谓,放的话就放两倍大图,不用放原尺寸图

原创粉丝点击