精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android布局中長度單位的深入研究

移動開發(fā) Android
要想使自己的布局在不同設(shè)備達到精準空置,理清理順Android布局長度單位之間關(guān)系很有必要,否則你也許會經(jīng)常撓頭為什么顯示出來的布局不是自己定義的效果呢,有些東西,雖然基礎(chǔ),但是弄個透徹也需要花些功夫,廢話不多說,下面開始。

要想使自己的布局在不同設(shè)備達到精準空置,理清理順Android布局長度單位之間關(guān)系很有必要,否則你也許會經(jīng)常撓頭為什么顯示出來的布局不是自己定義的效果呢,有些東西,雖然基礎(chǔ),但是弄個透徹也需要花些功夫,廢話不多說,下面開始。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. public void testgetdisplay(){ 
  2. WindowManager wm = (WindowManager) this.getInstrumentation().getContext().getSystemService(Context.WINDOW_SERVICE); 
  3. DisplayMetrics mDisplayMetrics = new DisplayMetrics(); 
  4. wm.getDefaultDisplay().getMetrics(mDisplayMetrics); 
  5. System.out.println("display.height="+wm.getDefaultDisplay().getHeight()); 
  6. System.out.println("display.width="+wm.getDefaultDisplay().getWidth()); 
  7. System.out.println("densityDpi="+mDisplayMetrics.densityDpi); 
  8. System.out.println("xdpi="+mDisplayMetrics.xdpi); 
  9. System.out.println("density="+mDisplayMetrics.density); 

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

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

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ā)現(xiàn)設(shè)置了不同長度單位,可顯示出來的效果卻出人預(yù)想,我曾經(jīng)就碰到過這種撓頭的問題,為解決這個問題,只有深入代碼,一探究竟了。

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

launcher:cellWidth="105pt"

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

android:layout_width="800px"

是一樣的。

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

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

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

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

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

  1. public int getDimensionPixelSize(int index, int defValue) 
  2. public static int complexToDimensionPixelSize(int data,DisplayMetrics metrics) 
  3. public static float applyDimension(int unit, float value,DisplayMetrics metrics){ 
  4. switch (unit) { 
  5. case COMPLEX_UNIT_PX: 
  6. return value; 
  7. case COMPLEX_UNIT_DIP: 
  8. return value * metrics.density; 
  9. case COMPLEX_UNIT_SP: 
  10. return value * metrics.scaledDensity; 
  11. case COMPLEX_UNIT_PT: 
  12. return value * metrics.xdpi * (1.0f/72); 
  13. case COMPLEX_UNIT_IN: 
  14. return value * metrics.xdpi; 
  15. case COMPLEX_UNIT_MM: 
  16. return value * metrics.xdpi * (1.0f/25.4f); 
  17. return 0

unit就是指單位類型,這個怎么來的我沒有,但我想它肯定是在解析xml是根據(jù)不同單位轉(zhuǎn)換的。

責任編輯:徐川 來源: OSChina
相關(guān)推薦

2011-06-01 10:58:54

Android Service

2011-12-15 10:43:20

JavaNIO

2024-03-17 19:14:28

2022-05-11 09:03:05

CSS容器文本換行

2010-06-21 13:07:14

2010-05-31 17:45:50

MySQL行鎖

2017-06-06 11:29:23

Java異常研究與分析

2016-01-12 18:04:55

Java異常研究

2018-12-24 15:00:58

混合云多云云采用

2010-11-23 16:35:59

MySQL刪除多表數(shù)據(jù)

2010-11-18 17:24:27

Oracle旋轉(zhuǎn)ins

2021-05-25 09:00:00

Kubernetes容器集群

2009-12-08 18:45:17

PHP檢查函數(shù)可用

2010-05-19 14:45:46

2009-10-20 10:17:50

綜合布線系統(tǒng)驗收

2022-04-19 08:28:34

main函數(shù)

2010-11-26 11:57:35

MySQL結(jié)果字符串

2012-10-29 10:30:36

CSSWeb前端display

2010-06-19 14:03:20

2010-08-23 17:47:33

DHCP服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品一区三区在线观看| 黑人操亚洲女人| 亚洲男人都懂第一日本| 婷婷综合在线观看| 先锋在线资源一区二区三区| 精品国产一级片| 亚洲欧美清纯在线制服| 欲色天天网综合久久| 日韩av福利在线观看| a级片在线免费| 欧美国产激情二区三区| 国产不卡一区二区在线观看 | 欧美精品中文| 欧美日韩国产小视频在线观看| 欧美在线观看视频免费| 九色蝌蚪在线| 国产aⅴ综合色| 国产精品7m视频| 久久精品国产亚洲AV无码男同| 欧美日韩国产高清电影| 亚洲第一精品电影| 日本77777| 欧美极度另类| 亚洲一二三四久久| 在线播放 亚洲| 免费国产在线视频| 成人国产在线观看| 91精品在线观看视频| 精品人妻一区二区色欲产成人| 91精品一区国产高清在线gif| 亚洲女同性videos| 丰满岳乱妇一区二区| 高清精品久久| 欧美影院一区二区三区| 欧美黑人经典片免费观看| 国产精品实拍| 国产精品久久久久久亚洲伦| 日本视频一区二区在线观看| 色婷婷av一区二区三区之e本道| 精品一区二区三区视频 | 综合视频免费看| 搞黄视频在线观看| 26uuu国产日韩综合| 国产欧美在线一区二区| www.亚洲黄色| 国内精品在线播放| 国产日韩换脸av一区在线观看| 国产精品久久久久久人| 亚洲裸体俱乐部裸体舞表演av| 久久91精品国产91久久久| 久久精品亚洲a| 国产精品精品国产一区二区| 中文字幕欧美精品在线| 夜夜春很很躁夜夜躁| 国产精品一区二区av交换| 亚洲欧洲国产伦综合| 亚洲专区区免费| 久草在线成人| 在线性视频日韩欧美| 国产 欧美 在线| 国产日产精品一区二区三区四区的观看方式 | 成人av资源在线观看| 亚洲最大福利视频网站| a级片免费视频| 国产成人免费视频一区| 国产精品夜夜夜一区二区三区尤| 亚洲AV无码精品国产| 国产999精品久久| 成人h视频在线观看| 欧美天堂在线视频| 91色九色蝌蚪| 日韩免费一区二区三区| 在线观看免费黄色| 成人免费在线播放视频| 热久久最新地址| 波多野结依一区| 欧美日韩免费在线| 久热免费在线观看| 色8久久久久| 日韩欧美国产综合| 污片免费在线观看| 欧美日韩xxxx| 久久精品亚洲一区| 日韩手机在线观看| 久色成人在线| 91精品在线看| 午夜性色福利视频| 欧美国产成人在线| 51xx午夜影福利| 欧美大胆a人体大胆做受| 在线国产亚洲欧美| 少妇欧美激情一区二区三区| 欧美韩一区二区| 深夜福利国产精品| 国产一级特黄视频| 免费成人在线影院| 国产传媒一区| eeuss影院在线播放| 亚洲最大成人网4388xx| 国内外成人免费激情视频| 色8久久久久| 日韩电影中文字幕一区| 91免费公开视频| 亚洲伊人观看| 亚洲xxxx3d| 黄色片免费在线| 一区二区三区四区在线播放| 无码人妻丰满熟妇区五十路百度| 精品视频在线播放一区二区三区 | 五月激情六月综合| 亚洲欧美日本一区二区三区| 国产亚洲成av人片在线观黄桃| 在线播放日韩专区| 中文字幕一区二区三区手机版 | 日韩不卡的av| 欧美日韩国产传媒| 68精品久久久久久欧美 | 久久99精品久久久久久动态图| 国产欧美一区二区视频| 国产激情视频在线| 欧美在线视频不卡| 亚洲第一成人网站| 在线看片欧美| 亚洲aⅴ男人的天堂在线观看| 毛片在线能看| 欧美日韩在线第一页| av在线天堂网| 91精品二区| 国产在线久久久| 国产69精品久久app免费版| 亚洲成a人v欧美综合天堂 | 黄色在线观看国产| 成人一道本在线| 亚洲综合欧美日韩| 欧美色网在线| 亚洲免费福利视频| 国产情侣在线视频| 不卡视频一二三四| 无码日本精品xxxxxxxxx| 24小时成人在线视频| 一本大道亚洲视频| 午夜视频网站在线观看| 久久久久久久久免费| 成年人黄色片视频| 亚洲人成网亚洲欧洲无码| 91精品国产高清久久久久久91| www.天堂av.com| 亚洲欧美日韩在线| 欧美色图校园春色| 欧美大片专区| 99视频免费观看| 色婷婷视频在线观看| 日韩午夜在线观看| 国产亚洲成人av| 国产成人精品免费一区二区| 成人在线观看www| 91麻豆精品国产综合久久久 | 在线播放中文字幕一区| 国产主播av在线| 久久成人综合网| 中文字幕一区二区三区5566| 亚洲视频自拍| 久久中文字幕视频| 亚洲第一视频在线播放| 五月婷婷激情综合| 国产精品亚洲无码| 蜜臀av性久久久久蜜臀aⅴ| 在线观看一区欧美| 亚洲1区在线| 韩国精品久久久999| 深夜视频在线免费| 欧美亚洲国产一区二区三区| 成人欧美一区二区三区黑人一| 国产伦精品一区二区三区免费 | 欧美日韩亚洲另类| 婷婷久久综合网| 粉嫩在线一区二区三区视频| 无码专区aaaaaa免费视频| 香蕉视频一区| 国产在线播放不卡| 免费男女羞羞的视频网站在线观看| 亚洲国产精品久久久久| 五月天婷婷导航| 国产精品激情偷乱一区二区∴| 好吊操视频这里只有精品| 国产一区二区三区久久| 亚洲精品一区二区三区蜜桃久| 日韩欧洲国产| 欧美洲成人男女午夜视频| 1769视频在线播放免费观看| 精品国产三级电影在线观看| 日韩精品一区二区亚洲av| 综合久久一区二区三区| 五月天激情小说| 美日韩一级片在线观看| 青青青在线观看视频| 韩日一区二区三区| 丁香婷婷久久久综合精品国产| 日本不卡一二三| 九九久久久久99精品| 免费在线超碰| 欧美tickling网站挠脚心| 国产一级片免费视频| 亚洲一级在线观看| 中国美女黄色一级片| hitomi一区二区三区精品| 五月婷婷六月合| 一区二区国产在线观看| 欧美日韩亚洲国产成人| 伊人久久大香线蕉av不卡| 97神马电影| 久久精品黄色| 日韩av电影在线网| 18video性欧美19sex高清| 最近更新的2019中文字幕| 天天操天天射天天| 5月丁香婷婷综合| 中文字幕 欧美激情| 亚洲18色成人| 欧美精品videos极品| 国产精品色一区二区三区| 日本少妇毛茸茸| 国产不卡一区视频| 奇米777在线| 美女高潮久久久| 搡女人真爽免费午夜网站| 亚洲日本黄色| 97超碰国产精品| 欧美精品啪啪| 亚洲精品偷拍视频| 成人精品电影| 日本一区二区在线| 欧美男gay| 欧美第一黄网| 日韩精品免费一区二区三区竹菊| 成人av资源网| 亚洲精品观看| 91久久爱成人| 亚洲乱码一区| 97在线中文字幕| 久久九九精品视频| 亚洲一区中文字幕在线观看| 亚洲精品毛片| 91久久国产精品| 色999韩欧美国产综合俺来也| 国产精品视频地址| 78精品国产综合久久香蕉| 国产精品夫妻激情| 欧美日韩五区| 国产精品久久综合av爱欲tv| 成人免费福利| 国产日韩欧美在线看| 免费日韩成人| 成人精品福利视频| 日韩最新av| 国产日韩欧美亚洲一区| 日韩母乳在线| 欧美亚洲另类在线一区二区三区| 国产一区二区欧美| 午夜精品区一区二区三| 日韩视频在线观看| 日本一本草久p| 国产一区日韩一区| 日本a级片免费观看| 日韩精品视频网| 亚洲免费黄色网| 懂色av一区二区三区免费观看 | 7m精品国产导航在线| 国产在线精品一区| 蜜桃成人av| 亚洲综合首页| 精品96久久久久久中文字幕无| 精品视频在线观看一区| 老牛影视一区二区三区| 国产精品视频中文字幕| 国产一区二区中文字幕| 成人在线电影网站| 久久久久一区二区三区四区| 免费看黄色三级| 亚洲乱码国产乱码精品精的特点| 久久一二三四区| 欧美性猛交xxxx富婆弯腰| 午夜视频网站在线观看| 日韩一区二区免费视频| 亚洲aaaaaaa| 色av吧综合网| 波多野结衣在线播放| 国产成人精品在线观看| 精品视频在线播放一区二区三区| 精品久久中出| 999成人精品视频线3| 成人av在线不卡| 久色成人在线| 91超薄肉色丝袜交足高跟凉鞋| 久久久亚洲精品一区二区三区| 男的操女的网站| 日本韩国欧美三级| 亚洲男人第一天堂| 中国人与牲禽动交精品| 美女尤物在线视频| 国产精品视频xxxx| 欧美91在线| 在线视频一区观看| 噜噜爱69成人精品| 丰满少妇xbxb毛片日本| 国产精品福利影院| 特级毛片www| 日韩一区二区在线观看视频| 国产区视频在线播放| 欧美黑人巨大xxx极品| 国产一区精品福利| 欧美高清性xxxxhd| 亚洲激情二区| 亚洲欧美日韩一二三区| 国产欧美日韩在线看| 精品少妇久久久| 制服.丝袜.亚洲.中文.综合| 久草视频视频在线播放| 午夜精品一区二区三区在线| 91麻豆精品一二三区在线| 日韩精品一区二区三区四区五区 | 欧美激情在线观看视频| 日韩欧美专区| 日日夜夜精品网站| 亚洲永久免费| 精品人妻一区二区三区日产| 一区二区久久久久久| 国产男男gay体育生白袜| 在线看欧美日韩| 亚洲精品.com| 欧美连裤袜在线视频| 国产日韩欧美一区| 日韩精品视频一区二区| 亚洲伊人色欲综合网| 国产熟女一区二区三区五月婷 | 亚洲欧美视频| 日本护士做爰视频| 亚洲成av人影院| 日韩一级片免费在线观看| 欧美激情精品久久久久久大尺度| 中文成人在线| 在线无限看免费粉色视频| 久久国产精品99精品国产| 老司机福利在线观看| 欧美色偷偷大香| jizz视频在线观看| 国产精品亚洲精品| 久久蜜桃av| 91 视频免费观看| 亚洲欧洲韩国日本视频| 国产精品无码一区二区桃花视频| 精品国产一区久久久| 97精品资源在线观看| 国产对白在线播放| 国产精品99久久久| 国产一级做a爱免费视频| 亚洲成avwww人| 美女露胸视频在线观看| 欧美日韩天天操| 麻豆视频观看网址久久| 国产又粗又硬又长又爽| 日韩视频在线你懂得| av3级在线| 欧美一区二区三区在线免费观看| 日本成人在线一区| 黑鬼狂亚洲人videos| 精品久久一二三区| 欧美私密网站| 亚洲精品自在在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 国产理论视频在线观看| 欧美国产日韩xxxxx| 欧美日韩看看2015永久免费| 成人精品视频一区二区| 国产精品剧情在线亚洲| 亚洲精品久久久蜜桃动漫| 91精品国产电影| 久久精品国产68国产精品亚洲| 久久无码人妻一区二区三区| 午夜精品久久久久久久99樱桃| 久久精品国产亚洲a∨麻豆| 国产综合色香蕉精品| 尤物精品在线| 天天操天天干天天操天天干| 欧美一区中文字幕| 密臀av在线播放| 一区二区三区日韩视频| 成人午夜激情影院| 蜜臀99久久精品久久久久小说| 久久精品国产91精品亚洲| 青青草久久爱| 中文字幕中文在线| 五月婷婷综合网| 国内外激情在线| 欧美激情一区二区三区在线视频| 精品系列免费在线观看| 中国一级免费毛片| 久久成人人人人精品欧| 制服丝袜日韩| av不卡中文字幕|