android鼠标dpi,对Android 中 px、DPI、dp(dip)、density的理解
1:px
像素。一般說(shuō)一個(gè)手機(jī)的分辨率為1280*720,意思就是寬度為720像素,高度為1280像素。
但是,安卓的適配不能用這種方式。
比如一個(gè)840*360的屏幕和一個(gè)1280*720的屏幕,我做了一個(gè)180px寬的布局,那么在第一個(gè)屏幕上就占據(jù)一半的寬度,在第二個(gè)屏幕上會(huì)只占據(jù)1/4的寬度。這樣無(wú)法達(dá)到適配要求。
2:DPI
既然px不能作為適配的單位,所以引入了DPI的概念。(Dots Per Inch)每英寸的點(diǎn)數(shù)。
舉例:現(xiàn)在規(guī)定有兩個(gè)手機(jī),尺寸一樣。都是寬度為2英寸,高度為3.5英寸(瞎舉的,高度咋滴都行)
第一個(gè)手機(jī)的分辨率為:840*360。也就是在2英寸的屏幕上,有360個(gè)像素點(diǎn),那么每英寸的像素點(diǎn)就是180個(gè)。
第二個(gè)手機(jī)的分辨率為:1280*720.也就是在2英寸的屏幕上,有720個(gè)像素點(diǎn),那么每英寸的像素點(diǎn)就是360個(gè)。
個(gè)數(shù)就是DPI
3:dp
然后引入了dp的概念,這個(gè)dp和屏幕分辨率就木有關(guān)系了,只和DPI有關(guān)系
規(guī)定是:當(dāng)dpi為160時(shí),1dp = 1px;
以此類推:當(dāng)dpi為320時(shí),1dp = 2px;
1dp = dpi/160 px;
那么,用dp來(lái)適配,
還是那兩個(gè)屏幕,840*360的DPI為180,1280*720的DPI為360.現(xiàn)在來(lái)做一個(gè)寬為80dp的div吧
第一個(gè)屏幕:1dp = (180/160)px = 1.125px; 80dp = 90px
第二個(gè)屏幕:1dp = (360/160)px = 2.25px; ?80dp = 180px;
都是對(duì)應(yīng)屏幕的1/4寬。這樣也就達(dá)到了適配的目的。
4:density
這個(gè)密度的值,其實(shí)就是dpi/160的值。
誒?上面說(shuō)1dp = dpi/160 px.那么,1dp = density px?
在安卓中,提供了獲取density的方法
getResources().getDisplayMetrics().density
這樣,也就實(shí)現(xiàn)了dp和px的換算
話說(shuō)為啥要換算dp和px呢?
因?yàn)?#xff0c;xml中既可以用px,也可以用dp
但是java代碼中,很多布局相關(guān)的單位都是px,比如:
LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(10,20,30,40);
這里的margins的四個(gè)參數(shù)left,top,right,bottom的單位都是px,得換成dp
總結(jié)
以上是生活随笔為你收集整理的android鼠标dpi,对Android 中 px、DPI、dp(dip)、density的理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android aar 修改,Andro
- 下一篇: android n AES加密,Andr