drawable中密度对代码的影响

首先配置程序:

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

你可能感兴趣的:(drawable中密度对代码的影响)