getResources().getDisplayMetrics().density 的理解

转载自:http://www.07net01.com/2015/04/814281.html



网上别人的代码 用于px和dp相互转换

import android.content.Context;  
  
public class DensityUtil {  
  
    /** 
     * 根据手机分辨率从 dp 的单位 转成为 px(像素) 
     */  
    public static int dip2px(Context context, float dpValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (dpValue * scale + 0.5f);  
    }  
  
    /** 
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp 
     */  
    public static int px2dip(Context context, float pxValue) {  
        final float scale = context.getResources().getDisplayMetrics().density;  
        return (int) (pxValue / scale + 0.5f);  
    }  
} 

重点,对density的理解

		float scale = getResources().getDisplayMetrics().density;
		//这个得到的不应该叫做密度,应该是密度的一个比例。不是真实的屏幕密度,而是相对于某个值的屏幕密度。
		//也可以说是相对密度
		/**
		 * The logical density of the display. This is a scaling factor for the
		 * Density Independent Pixel unit, where one DIP is one pixel on an
		 * approximately 160 dpi screen (for example a 240x320, 1.5"x2" screen),
		 * providing the baseline of the system's display. Thus on a 160dpi
		 * screen this density value will be 1; on a 120 dpi screen it would be
		 * .75; etc.
		 * 
		 * This value does not exactly follow the real screen size (as given by
		 * xdpi and ydpi, but rather is used to scale the size of the overall UI
		 * in steps based on gross changes in the display dpi. For example, a
		 * 240x320 screen will have a density of 1 even if its width is
		 * 1.8", 1.3", etc. However, if the screen resolution is increased to
		 * 320x480 but the screen size remained 1.5"x2" then the density would
		 * be increased (probably to 1.5).
		 */

		/**
		 * 显示器的逻辑密度,这是【独立的像素密度单位(首先明白dip是个单位)】的一个缩放因子,
		 * 在屏幕密度大约为160dpi的屏幕上,一个dip等于一个px,这个提供了系统显示器的一个基线(这句我实在翻译不了)。
		 * 例如:屏幕为240*320的手机屏幕,其尺寸为 1.5"*2"  也就是1.5英寸乘2英寸的屏幕
		 * 它的dpi(屏幕像素密度,也就是每英寸的像素数,dpi是dot per inch的缩写)大约就为160dpi,
		 * 所以在这个手机上dp和px的长度(可以说是长度,最起码从你的视觉感官上来说是这样的)是相等的。
		 * 因此在一个屏幕密度为160dpi的手机屏幕上density的值为1,而在120dpi的手机上为0.75等等
		 * (这里有一句话没翻译,实在读不通顺,不过通过下面的举例应该能看懂)
		 * 例如:一个240*320的屏幕尽管他的屏幕尺寸为1.8"*1.3",(我算了下这个的dpi大约为180dpi多点)
		 * 但是它的density还是1(也就是说取了近似值)
		 * 然而,如果屏幕分辨率增加到320*480 但是屏幕尺寸仍然保持1.5"*2" 的时候(和最开始的例子比较)
		 * 这个手机的density将会增加(可能会增加到1.5)
		 */

转载请注明:Itroadmap » getResources().getDisplayMetrics().density 的理解(px和dp相互转换)

赞 (0) 评论 分享 (0)

  • 还没有评论,沙发等你来抢

电脑玩物正在使用多说

<iframe id="iframeu2499984_0" src="http://pos.baidu.com/gcwm?rdid=2499984&amp;dc=2&amp;di=u2499984&amp;dri=0&amp;dis=0&amp;dai=1&amp;ps=599x960&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1467544569279&amp;ti=getResources().getDisplayMetrics().density%20%E7%9A%84%E7%90%86%E8%A7%A3%EF%BC%88px_%E3%80%8C%E7%94%B5%E8%84%91%E7%8E%A9%E7%89%A9%E3%80%8D%E4%B8%AD%E6%96%87%E7%BD%91%E6%88%91&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1281x645&amp;pss=1281x2771&amp;cfv=0&amp;cpl=34&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1453399100&amp;rw=645&amp;ltu=http%3A%2F%2Fwww.07net01.com%2F2015%2F04%2F814281.html&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dhqyv31tj7O4yxkPfljzN64D1XX9TKK9QXnFZwsND5iloLsJAwJvp---2W-WEkFqNNH12Lqo4z6YUjUhTE0cVRa%26wd%3D%26eqid%3D8acb61a7003de7fc000000055778f351&amp;ecd=1&amp;psr=1360x768&amp;par=1298x768&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=60&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1467544569&amp;qn=fd8cce91e9c6890e&amp;tt=1467544569144.139.450.454" width="300" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: border-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
<iframe id="iframeu2500053_0" src="http://pos.baidu.com/gcwm?rdid=2500053&amp;dc=2&amp;di=u2500053&amp;dri=0&amp;dis=0&amp;dai=2&amp;ps=1445x960&amp;dcb=BAIDU_SSP_define&amp;dtm=BAIDU_DUP_SETJSONADSLOT&amp;dvi=0.0&amp;dci=-1&amp;dpt=none&amp;tsr=0&amp;tpr=1467544569279&amp;ti=getResources().getDisplayMetrics().density%20%E7%9A%84%E7%90%86%E8%A7%A3%EF%BC%88px_%E3%80%8C%E7%94%B5%E8%84%91%E7%8E%A9%E7%89%A9%E3%80%8D%E4%B8%AD%E6%96%87%E7%BD%91%E6%88%91&amp;ari=1&amp;dbv=2&amp;drs=1&amp;pcs=1281x645&amp;pss=1281x2771&amp;cfv=0&amp;cpl=34&amp;chi=1&amp;cce=true&amp;cec=UTF-8&amp;tlm=1453399100&amp;rw=645&amp;ltu=http%3A%2F%2Fwww.07net01.com%2F2015%2F04%2F814281.html&amp;ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3Dhqyv31tj7O4yxkPfljzN64D1XX9TKK9QXnFZwsND5iloLsJAwJvp---2W-WEkFqNNH12Lqo4z6YUjUhTE0cVRa%26wd%3D%26eqid%3D8acb61a7003de7fc000000055778f351&amp;ecd=1&amp;psr=1360x768&amp;par=1298x768&amp;pis=-1x-1&amp;ccd=24&amp;cja=true&amp;cmi=60&amp;col=zh-CN&amp;cdo=-1&amp;tcn=1467544569&amp;qn=7ca9718650667a5b&amp;tt=1467544569144.186.459.460" width="300" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="box-sizing: border-box; border-width: 0px; border-style: initial; vertical-align: bottom; margin: 0px;"></iframe>
© 2014 「电脑玩物」中文网我们只是「电脑玩物」     c7cc  聊城水处理  微粒子  汽车887  站长统计

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页