getintrinsicwidth()/getIntrinsicHeight()大于或者小于图片实际像素大小

原创 2015年11月20日 16:10:45

给在XML里给ImageView设置一张图片: 

android:src="@drawable/aaa"

然后在java代码中:

int intrinsicWidth = mImageView.getDrawable().getIntrinsicWidth();
int intrinsicHeight = mImageView.getDrawable().getIntrinsicHeight();
打印出来的结果发现大于图片的实际宽高;
度娘搜索无果,google一下,在stackoverflow【点我跳转】上找到了答案:原来我的测试设备是1080p,对应的图片资源文件应该是drawable-xxhdpi,但是这张图片位于drawable-xhdpi 目录下:
You said the drawable is from your /res folder. Which folder is it in?

/res/drawable
/res/drawable-mdpi
/res/drawable-hdpi

etc..

And what is the density of the device you are testing on? Is it a Nexus S with general density of 240dpi? Because if your source drawable is located in the drawable-mdpi folder and you are testing on a 240dpi device, then the Android system will automatically scale the drawable up by a factor of 1.5 so that the physical size will be consistent with the baseline device density at 160dpi.

When you call getIntrinsicWidth() what is returned is the size the drawable wants to be after Android scales the drawable. You'll notice that 2880 = 1920 * 1.5

If you placed the drawable in /res/drawable the Android system treats those drawables as meant for mdpi devices, thus the upscaling in your Nexus S. If this was meant for hdpi screens and you do not want this to upscale then try placing it in drawable-hdpi


就不翻译了,很老的常识问题,很简单,记录一下,免得忘记~




Android : Drawable之getIntrinsicWidth()和getIntrinsicHeight()

在Android的开发中,凡是需要画图的地方大都离不开类Drawable。Android的官方文档中介绍这个类就是被设计用来表示可以被画的东西。 A Drawable is a general a...

Android Drawable 那些不为人知的高效用法

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43752383,本文出自:【张鸿洋的博客】1、概述Drawable在我们平时的开发...

Drawable的getIntrinsicHeight()和getIntrinsicWidth()

今天遇到一个问题,一个Bitmap封装到BitmapDrawable中 ,BitmapDrawable drawable = new BitmapDrawable(bmp), Bitmap.getW...

Android getIntrinsicWidth()获取到的值在不同的项目不同

private ImageView crossImageView; int crossWidth = crossImageView.getDrawable().getIntrinsicWidth();...

详解Android Drawable

详解Android Drawable

利用Canvas saveLayer手动绘制圆角View

项目中包含了一个腾讯地图,由于该mapView 不支持圆角背景,so决定自己画四个圆角view,覆盖在mapView上以实现圆角矩形的效果。public class CornerView extend...

解决Android Bitmap内存溢出问题

android系统的手机在系统底层指定了堆内存的上限值,大部分手机的缺省值是16MB,不过也有些高配置的机型是24MB的,所以我们的程序在申请内存空间时,为了确保能够成功申请到内存空间,应该保证当前已...

通过new BitmapDrawable()方法将Bitmap转化为Drawable的getIntrinsicHeight()和getIntrinsicWidth() 问题。

今天遇到一个问题,一个Bitmap封装到BitmapDrawable中 ,BitmapDrawable drawable = new BitmapDrawable(bmp), Bitmap.getW...

VC资源编辑器里对话框的大小和实际的像素尺寸显示问题

在使用Visual Studio 6.0(Visual C++ 6.0)开发的过程中,对话框中的控件在资源编辑器中的尺寸和其实际的像素尺寸之间的对应问题非常的令人烦恼。特别是在要求对话框控件大小随屏幕...

VC资源编辑器里对话框的大小和实际的像素尺寸显示问题

在使用Visual Studio 6.0(Visual C++ 6.0)VS2005及VS2008也存在同样的问题,开发的过程中,对话框中的控件在资源编辑器中的尺寸和其实际的像素尺寸之间的对应问题非常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:getintrinsicwidth()/getIntrinsicHeight()大于或者小于图片实际像素大小
举报原因:
原因补充:

(最多只允许输入30个字)