欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Android布局中的長度單位是什么-創(chuàng)新互聯

這篇文章主要介紹了Android布局中的長度單位是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Android布局中的長度單位是什么文章都會有所收獲,下面我們一起來看看吧。

創(chuàng)新互聯建站-專業(yè)網站定制、快速模板網站建設、高性價比長島網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式長島網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋長島地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。

1.先了解一下Android有支持哪些長度單位

px: pixels(像素). 不同設備顯示效果相同,比如我們800*480的屏幕寬度就是 800px

dip: device independent pixels(設備獨立像素). 不同設備有不同的顯示效果,這個和設備硬件有關,通常屏幕大時,density就大,屏幕小時,density就小

屏幕實際分辨率為240px*400px時,densityDpi=120

屏幕實際分辨率為320px*533px,densityDpi=160

屏幕實際分辨率為480px*800px,densityDpi=240

而dip與px之間的換算關系是:

pixs =dips * (densityDpi/160),也就是說當densityDpi=160時,1dip=1px

sp: scaled pixels(放大像素),sp的大小取決于系統(tǒng)metrics.scaledDensity值大小

pt: point,是一個標準的長度單位,1pt=1/72英寸,用于印刷業(yè)(基本用不到)

pt與px的換算關系:pixs = pt*xdpi * (1.0f/72);xdpi表示1英寸像素個數

in(英寸)長度單位(基本用不到)

in與px的換算關系:pixs = in*xdpi

mm(毫米)長度單位(基本用不到)

mm與px的換算關系:pixs = mm * xdpi * (1.0f/25.4f)

2.系統(tǒng)獲取長度單位

看了上面具體長度單位的含義你會產生一個疑問,不同單位換算取決于系統(tǒng)的一些屬性,比如densityDpi的值,xdpi的值,那么系統(tǒng)這些值在哪里獲取了,直接看測試用例:

public void testgetdisplay(){ WindowManager wm = (WindowManager) this.getInstrumentation().getContext().getSystemService(Context.WINDOW_SERVICE); DisplayMetrics mDisplayMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(mDisplayMetrics); System.out.println("display.height="+wm.getDefaultDisplay().getHeight()); System.out.println("display.width="+wm.getDefaultDisplay().getWidth()); System.out.println("densityDpi="+mDisplayMetrics.densityDpi); System.out.println("xdpi="+mDisplayMetrics.xdpi); System.out.println("density="+mDisplayMetrics.density); }

3.densityDpi與drawable-(hdpi,mdpi,ldpi)之間的關系

系統(tǒng)drawable有hdpi,mdpi,ldpi三個文件夾下面存放不同尺寸的圖片,使用哪個文件下的文件,與系統(tǒng)densityDpi值是有關系的。

densityDpi=120:ldpi
densityDpi=160:mdpi
densityDpi=240:hdpi

前面我又說過densityDpi取決于顯示屏,這樣你就了解了為什么不同顯示屏WVGA,HVGA,QVGA會采用不同drawable-(hdpi,mdpi,ldpi)圖片。

分辨率為240px*400px,densityDpi=120-->QVGA:ldpi

分辨率為320px*533px,densityDpi=160 -->HVGA:mdpi

分辨率為480px*800px,densityDpi=240 -->WVGA:WVGA

4.深入了解代碼

盡管了解上面這些理論值,但是有時候發(fā)現設置了不同長度單位,可顯示出來的效果卻出人預想,我曾經就碰到過這種撓頭的問題,為解決這個問題,只有深入代碼,一探究竟了。

在深入代碼前我們首先要搞清楚一個問題,那就是代碼中所有長度值的單位都是px,手上沒有現成的例子就以現在我研究的/Launcher2/res/layout-land/workspace_screen.xml為例,看一個自定義屬性:

launcher:cellWidth="105pt"

該屬性自定義了一個桌面快捷圖標的寬度,若讀者自己測試,自己寫個測試view,設置屬性:

android:layout_width="800px"

是一樣的。

當view被創(chuàng)建的時候,xml中的屬性值存在參數AttributeSet attrs中:

public CellLayout(Context context, AttributeSet attrs, int defStyle)

繼續(xù)看該構造函數的實現代碼:

public CellLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); //獲取自定義屬性組CellLayout中的所有自定義屬性,關于自定義屬性,這里不作展開說明 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CellLayout, defStyle, 0); //獲取屬性cellWidth的值,長度單位將轉換為px mCellWidth = a.getDimensionPixelSize(R.styleable.CellLayout_cellWidth, 10); 。。。 }

實現長度單位換算的關鍵代碼就在a.getDimensionPixelSize(R.styleable.CellLayout_cellWidth, 10),直接深入到關鍵代碼:

public int getDimensionPixelSize(int index, int defValue) public static int complexToDimensionPixelSize(int data,DisplayMetrics metrics) public static float applyDimension(int unit, float value,DisplayMetrics metrics){ switch (unit) { case COMPLEX_UNIT_PX: return value; case COMPLEX_UNIT_DIP: return value * metrics.density; case COMPLEX_UNIT_SP: return value * metrics.scaledDensity; case COMPLEX_UNIT_PT: return value * metrics.xdpi * (1.0f/72); case COMPLEX_UNIT_IN: return value * metrics.xdpi; case COMPLEX_UNIT_MM: return value * metrics.xdpi * (1.0f/25.4f); } return 0; }

關于“Android布局中的長度單位是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Android布局中的長度單位是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。

本文標題:Android布局中的長度單位是什么-創(chuàng)新互聯
文章位置:http://chinadenli.net/article42/pecec.html

成都網站建設公司_創(chuàng)新互聯,為您提供電子商務、定制開發(fā)動態(tài)網站、網站內鏈、微信小程序、手機網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站優(yōu)化排名
亚洲天堂精品1024| 99亚洲综合精品成人网色播 | 久久女同精品一区二区| 国产一区二区精品丝袜| 暴力性生活在线免费视频| 国产精品午夜性色视频| 欧美午夜一级艳片免费看| 91偷拍视频久久精品| 日本人妻精品有码字幕| 91后入中出内射在线| 熟女少妇一区二区三区蜜桃| 欧美一级日韩中文字幕| 国产级别精品一区二区视频| 丰满少妇被粗大猛烈进出视频| 嫩呦国产一区二区三区av| 亚洲精品福利入口在线| 91欧美日韩中在线视频| 日韩欧美国产三级在线观看| 久热人妻中文字幕一区二区| 最近最新中文字幕免费| 日本高清一道一二三区四五区| 午夜精品国产精品久久久| 深夜视频成人在线观看| 国产综合一区二区三区av | 日韩精品你懂的在线观看| 日韩精品中文字幕亚洲| 亚洲中文字幕视频一区二区| 精品国产亚洲av久一区二区三区 | 亚洲伊人久久精品国产| 久久午夜福利精品日韩| 久久99青青精品免费观看| 久久碰国产一区二区三区| 国产欧美日韩在线精品一二区| 国产传媒精品视频一区| 欧美黑人黄色一区二区| 日韩一级一片内射视频4k | 日韩精品中文字幕亚洲| 91麻豆精品欧美视频| 成人国产激情福利久久| 久久国产亚洲精品成人| 亚洲国产香蕉视频在线观看|