在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为单位的哦。

转载于:https://www.cnblogs.com/zhujiabin/p/7510001.html

Android Drawable之getIntrinsicWidth()和getIntrinsicHeight()相关推荐

  1. android drawable 比例,Android中的Drawable基础与自定义Drawable

    转载请注明链接:http://blog..net/feather_wch/article/details/79124608 本文要点: 1. 介绍Android中Drawable的相关知识点,并且介绍 ...

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

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

  3. 领略千变万化的Android Drawable (一)

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52247324 出自[zejian的博客] 关联文章: 领略千变万化的 ...

  4. Android Drawable之ScaleDrawable

    Overview ScaleDrawable与ClipDrawable类似,可以根据设置的level值对drawable进行缩放,但与ClipDrawable不同的是,ScaleDrawable还可以 ...

  5. android level list,Android Drawable (levle List selector layer List)

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 管理大量备选可绘制对象的可绘制对象,每个可绘制对象都分配有最大的备选数量.使用 setLevel() 设置可绘制对象的级 ...

  6. Android Drawable 详解(教你画画!)

    参考 1.Android中的Drawable基础与自定义Drawable 2.android中的drawable资源 3.Android开发之Shape详细解读 Drawable分类 No xml标签 ...

  7. android Drawable.mutate()的使用

    今天,简单讲讲android里如何使用Drawable的mutate函数. 最近,我看到一个自定义控件里用到了Drawable的mutate(),但是自己不知道是什么意思,于是在网上查找了资料,最终解 ...

  8. Android Drawable绘图学习笔记

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

  9. Android Drawable 与 LayerList综合汇总

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

最新文章

  1. Markdown语法简介
  2. 利用 51 定时器生成 PWM
  3. c++ 封装的zookeeper库
  4. Linux下的文件共享全攻略系列之二:NFS快速配置教程与安全策略
  5. php开启filtervar_PHP如何使用filter_var()函数?(代码示例)
  6. django关闭debug后,报400错误
  7. matlab使用webcam获取摄像头图像,camList = webcamlist
  8. 【狂神说Redis】1NoSQL概述 1-1为什么使用NoSQL
  9. 怎么关闭计算机硬件加速,win7关闭硬件加速的方法,手把手抓图教你如何关闭硬件加速功能...
  10. 无线路由器实现局域网内中继功能
  11. 利用交换机搭建局域网并实现PC机或者带网口设备的通信
  12. 科学计算机开多次方根号,计算器开多次方怎么操?
  13. Map集合通过value获取key的几种方式
  14. 2019西湖论剑网络安全技能大赛(大学生组)部分WriteUp
  15. Android 手机实现网络嗅探发现周围设备(类似悟空遥控器)
  16. 用数学语言说我爱你怎么说_你会说我的语言吗
  17. 头哥实践教学平台 CC++程序设计(计算机程序设计)基本输入输出 第2关:整数四则运算表达式的输出格式控制
  18. TearDrop拒绝服务攻击
  19. 求两个数的 最大公约数 和最小公倍数
  20. java反序列化漏洞分析

热门文章

  1. html中transition默认,CSS3中的Transition详解
  2. 智能财务师 (544) -(喀麦隆)_智能财务管理师项目组到南京理工大学调研“智能会计”专业学科建设...
  3. mysql去掉乱码_mysql消除乱码方法集
  4. 深度相机(七)--体感设备对比
  5. 工程思想——【误差与分辨度】
  6. VScode找不到C++万能头文件<bits/stdc++.h>解决办法
  7. 防止网线中的信号衰减很重要
  8. java 哈希表入门
  9. 抓住数字经济机遇 新华三助力客户加速转型
  10. kettle使用文件导入到Postgresql出现如下几种问题的总结