在Android的开发中,凡是需要画图的地方大都离不开类Drawable。Android的官方文档中介绍这个类就是被设计用来表示可以被画的东西。A Drawable is a general abstraction for "something that can be drawn."
       细心的同学可能会发现这个类提供了这样两个方法:getIntrinsicWidth()和getIntrinsicHeight(),顾名思义他们是用来取得Drawable的固有的宽度和高度。那么问题就来了:我们有时候通过这两个方法取到的宽和高和实际的并不一样,这是怎么回事呢?
       笔者就遇到了同样的问题:我在assets中放了了一张png图片,它的分辨率是807x1211,然后通过Drawable.createFromStream(is, null)生成一个Drawable对象,最后利用上面的两个方法取drawable对象的宽高,居然结果是404x606。这是怎么回事呢?看笔者娓娓道来。
        再次强调一下,Drawable这个类是对所有可以画的东西的抽象,他可以是一张图片,也可以是实体的颜色,线等等,我们不能简单的认为它是一张图片。笔者经过实验发现,我的测试设备dpi是320,而android为了让同一个view在不同dpi的设备上大小尽量保持一致,建议度量单位采用dip/dp。所以我猜测上面两个方法的单位应该是dp,所以807px = 807 * 160 / 320 = 403.5 = 404dp ; 1211px = 1211 * 160 / 320 = 605.5 = 606dp, 所以各位同学现在明白了吧,getIntrinsicWidth()和getIntrinsicHeight()返回的宽高应该是dp为单位的哦。

Android Drawable之getIntrinsicWidth()和getIntrinsicHeight()的更多相关文章

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

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

  2. Android Drawable 那些不为人知的高效使用方法

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

  3. Android Drawable的9种子类 介绍

    原文: Android Drawable的9种子类 介绍   Drawable 在android里面 就是代表着图像,注意是图像 而不是图片. 图片是图像的子集.图像除了可以包含图片以外 还可以包含颜 ...

  4. 【转】Android Drawable Resource学习(十一)、RotateDrawable

    对另一个drawable资源,基于当前的level,进行旋转的drawable. 文件位置: res/drawable/filename.xml文件名即资源名 编译数据类型: 指向 RotateDra ...

  5. Android Drawable 与 LayerList综合汇总

    先看需求.要求这样的效果 上代码 <?xml version="1.0" encoding="utf-8"? > <layer-list xm ...

  6. Android Drawable绘图学习笔记(转)

    如何获取 res 中的资源 数据包package:android.content.res 主要类:Resources Android SDK中的简介:Class for accessing an ap ...

  7. 【转】【Android】Android Drawable Shape 组合画田字格

    使用layer-list组合多个Shap <?xml version="1.0" encoding="utf-8"?> <layer-list ...

  8. Android Drawable Mipmap Vector使用及Vector兼容

    原文地址:http://blog.csdn.net/eclipsexys/article/details/51838119 http://blog.csdn.net/qq_15545283/artic ...

  9. Android Studio插件:Android Drawable Importer

    Android Drawable Importer 为了在不同分辨率的设备上更好的展示图片的效果,我们往往需要在 res/drawable 中添加不同分辨率的图片.有时我们可能手里只有一份分辨率的图片 ...

随机推荐

  1. socket主要函数介绍

    1.   基本套接字函数(1)socket函数原型 socket(建立一个socket文件描述符) 所需头文件 #include <sys/types.h> #include <sy ...

  2. vue中用v-for循环出出来的div下面的span不给宽度也能相对于div居中

    效果图 1.html <div> <div v-on:mousemove="dataDetails($event, item)" v-on:mouseleave= ...

  3. eas中删除原来的监听事件添加新的监听事件

    kdtEntrys.removeKDTEditListener(kdtEntrys.getListeners(KDTEditListener.class)[0]);  kdtEntrys.addKDT ...

  4. html第六节课

    JavaScript 一.JavaScript简介 1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系 ...

  5. Java常量池详细说明

    java常量池技术  java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间.常量池 ...

  6. HTML <area> 对象

    <area>对象的属性 属性 描述 W3C alt 设置或返回当浏览器无法显示某个区域时的替换文字. Yes coords 设置或返回图像映射中可点击区域的坐标. Yes hash 设置或 ...

  7. Python中的sorted() 和 list.sort() 的用法总结

    只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reverse=False) =号后面是默认值 默认是升序排序的, 如果想让结果降 ...

  8. D2007在win7下bordbk105N.dll 莫名其妙的问题。

    已经装过一次win7下d2007.再装一次就出现许多莫名其妙的问题.其中之一: Windows 7 64bit Delphi Debugger Fix / Workaround 2013-08-28 ...

  9. springcloud 中文文档

    spring cloud 中文文档:https://springcloud.cc/spring-cloud-dalston.html spring cloud 中文网:https://springcl ...

  10. ISAP 算法的学习

    http://www.renfei.org/blog/isap.html 算法与数学 网络流-最大流问题 ISAP 算法解释 2013-08-07Renfei Song 2 条评论 内容提要 [隐藏] ...