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