Drawable类中有一对方法getIntrinsicWidth()和getIntrinsicHeight():顾名思议让我开始觉得它们得到的是drawable图片的原始固有宽高,如果这样理解的话那得到的宽高肯定是drawable本身固有的属性,同一个drawable不会随着硬件软件环境的影响都会保持不变才对。
但事实是:我理解错了,相信还有不少经验不够丰富的同学也是这么理解的。
正确的理解是:方法名只是名字而已,不能完全代表方法本意。这两个方法获得的宽高是设备依赖的。在stackoverflow上看到正确理解,有一个例子,两个ic_launcher图片分放在hdpi文件下和xhdpi文件下,如果设备是xhdpi,测试打印得到intrinsic值是96.然后把xhdpi文件下的图片删除,同样运行在xhdpi的设备上得到的依然是96,而不是现在环境唯一的图片:在hdpi文件下的intrinsic值本是72.
所以正确理解应该是:得到的非图片固有属性,而是与设备相关的值。