欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

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

這篇文章主要介紹了Android布局中的長(zhǎng)度單位是什么的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Android布局中的長(zhǎng)度單位是什么文章都會(huì)有所收獲,下面我們一起來看看吧。

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

1.先了解一下Android有支持哪些長(zhǎng)度單位

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

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

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

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

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

而dip與px之間的換算關(guān)系是:

pixs =dips * (densityDpi/160),也就是說當(dāng)densityDpi=160時(shí),1dip=1px

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

pt: point,是一個(gè)標(biāo)準(zhǔn)的長(zhǎng)度單位,1pt=1/72英寸,用于印刷業(yè)(基本用不到)

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

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

in與px的換算關(guān)系:pixs = in*xdpi

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

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

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

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

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)之間的關(guān)系

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

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

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

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

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

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

4.深入了解代碼

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

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

launcher:cellWidth="105pt"

該屬性自定義了一個(gè)桌面快捷圖標(biāo)的寬度,若讀者自己測(cè)試,自己寫個(gè)測(cè)試view,設(shè)置屬性:

android:layout_width="800px"

是一樣的。

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

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

繼續(xù)看該構(gòu)造函數(shù)的實(shí)現(xiàn)代碼:

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

實(shí)現(xiàn)長(zhǎng)度單位換算的關(guān)鍵代碼就在a.getDimensionPixelSize(R.styleable.CellLayout_cellWidth, 10),直接深入到關(guān)鍵代碼:

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; }

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

本文標(biāo)題:Android布局中的長(zhǎng)度單位是什么-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article42/pecec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、定制開發(fā)、動(dòng)態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈微信小程序、手機(jī)網(wǎng)站建設(shè)

廣告

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

網(wǎng)站優(yōu)化排名
天天操天天日天天干夜夜情欢| 超碰91人人在线青青草| 久久五月精品综网中文字幕| 在线视频网友自拍偷拍| 综合久久精品亚洲天堂| 免费国产午夜福利在线| 日韩视频一区二区三区系列| 亚洲天堂国产中文在线| 91薄丝激情在线播放| 国产亚洲精品麻豆一区二区| 少妇高潮一区二区三区在线| 91午夜福利偷拍视频| 欧美日韩一区二区三区666| 91精品夜夜夜一区二区| 国产精品免费视频一区二区三区| 日韩在线一区二区三区电影| 久久久久亚洲av成人| 亚洲精品一品区二品区三区| 久久97精品人人做人人爽| 老湿机午夜在线免费观看| 日本在线电影一区二区三区| 欧美激情三级一区二区| 视频一区二区中文字幕日韩| 久久av一区二区三区.| 精品视频美女肉体亚洲| 亚洲美女国产精选999| 白白色最新福利视频二| 天天干天天干夜夜操| 精品国产综合一区二区三区 | 久久精品国产精品亚洲片| 欧美日韩国产精品久久乐播| 十八禁网站免费在线播放| 2018在线不卡爱视频| 久久综合久中文字幕青草| 欧美大片免费在线播放| 在线蜜臀av中文字幕| 久久中文字幕av一区| 性生活自制视频网站麻豆| av在线手机中文字幕| 久久亚洲精品综合一区| 熟女一区二区蜜桃视频|