drawable = getResources().getDrawable(R.drawable.xxx); System.out.println("Height:"+drawable.getIntrinsicHeight()); System.out.println("Width:"+drawable.getIntrinsicWidth());
如果是单组图片,获取到的图片资源大小或许和你实际图片资源的大小有区别,可能会大,可能会小。
原因处在哪里?像素密度(DPI)!
至于DPI如何计算,那就请度娘谷哥吧
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
四种屏幕的DPI:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi
四种屏幕对应density:0.75,1,1.5,2
四种图片资源文件夹:drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
基本资料搞清了,回到正题。
现在算算你的测试机,或者模拟器的DPI是多少吧,或许和上面四个值有差异,那就找比较靠近的(至于为什么,请看看这片文章 http://zhangkun716717-126-com.iteye.com/blog/1772696),或者运行下面的代码:
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); System.out.println("dm.density:"+dm.density); System.out.println("dm.densityDpi:"+dm.densityDpi);
算出了测试机的DPI,记录为D_PHONE。好在看看你把你的测试图片放在了哪个文件夹下,根据上文资料找到对应的dpi,记录为D_FOLDER
你实际图片的高或者宽记录为IMAGE_SIZE
计算一下 x = IMAGE_SIZE * (D_PHONE/D_FOLDER)
好了x的结构是不是和最初程序里打印出的drawable的大小一样了
很明显了,与你你测试机像素密度对应的文件夹里没找到图片,他去另外一个像素密度的文件夹里找到了,相应结果的就是图片被放大(或者缩小)了。
总结一下:
简单的说:你没有做屏幕适配工作。根据目前的手机来说至少要做两组图片 分别为放在drawable-hdpi,drawable-xhdpi。大公司的产品就请把另外两组图片也做了吧,美工辛苦一点。如果只有一组图片又想获取到图片实际像素值,可以根据这个计算一下。
提醒一下,imageview在布局文件里用wap_content设置的高和宽,在没有其他控件挤压的情况下宽和高也是由对应drawable的宽高决定的,可以自己查源码。
再有不清楚的请留言。
相关推荐
android 通过图片名称获取 drawable 目录下的图片 ~~~~~~~~~~~~~~~~~
drawable实现三角形,原博客地址:https://blog.csdn.net/u010356768/article/details/76040972#comments 大家去原博客地址看下就知道了。不用下载浪费积分
android drawable下的xml详解
Android Drawable、Bitmap、byte、灰度 之间的转换
Android Drawable、Bitmap、byte、灰度 转换
Android drawable 玩转自定义图片以及bug的解决
this is a sample showing how to display drawable in android.
Android所有系统资源图标android.R.drawable.xxx查看软件 源码地址:http://blog.csdn.net/dianyueneo/article/details/7197067
android中的drawable集合,包括Bitmap、shape、Layer、Transition等等
Android中Drawable分类汇总,学习drawable的文档,很全
android Drawable分类汇总
xhdpi图片转换,能任意转换Android Drawable下的各种规格格式 "ldpi", "mdpi", "hdpi", "xhdpi","xxhdpi", "xxxhdpi" 比如我的美工人员设计了一个图片适合 xhdpi 分辨率的手机,我可以通过AndroidDrawable将这个...
Android Drawable Importer Plugin This plugin consists of three main features. You can access them by right-clicking anywhere, but not on a file, inside an Android (library) module under New. ...
android-gif-drawable 用于在Android上显示动画GIF
Android自定义Drawable的代码例子。用于演示自定义Drawable的功能,包括自定义形状、自定义水印、自定义淡出等几种类型的Drawable。
android所有的可自定义xml资源的元素及子元素用法
androiddrawable文档解释.pdf
android_gif_drawable(播放gif图片)
Android系统图标android.R.drawable下的所有图标查看软件
代码为博客的实例代码:http://blog.csdn.net/lmj623565791/article/details/43752383