分享磨礪營馬劍威老師講解-Android機型適配

一? 機型適配介紹

1耳高、 Android中機型適配出現(xiàn)的原因

由于Android系統(tǒng)的開放性癞蚕,任何用戶、開發(fā)者著蛙、OEM廠商删铃、運營商都可以對Android進行定制,修改成他們想要的樣子踏堡。結果導致Android設備出現(xiàn)大量的"碎片化"的現(xiàn)象猎唁。

碎片化具體更多的表現(xiàn)在系統(tǒng)碎片和屏幕碎片兩個方面。下圖中顷蟆,每一個矩形就代表了一種Android設備诫隅。


2腐魂、 機型適配的思路

6個主流分辨率:800*480、480*320逐纬、1280*720蛔屹、854*480、960*540豁生、1920*1080

適配的基本思路是用通用的代碼盡可能適配更多的機型兔毒,特殊機型特殊處理。機型適配主要包括三個方面的適配:屏幕適配甸箱、版本適配和語言適配眼刃。

二 屏幕相關概念

1、 屏幕尺寸摇肌、屏幕分辨率、屏幕像素密度

屏幕尺寸:指屏幕的對角線的長度仪际,單位是英寸围小,1英寸=2.54厘米

屏幕分辨率:指在橫縱向上的像素點數(shù),單位是px树碱,1px=1個像素點

屏幕像素密度是:指每英寸上的像素點數(shù)肯适,單位是dpi,即“dot per inch”的縮寫成榜。

2框舔、 獲得屏幕分辨率和密度

DisplayMetrics 類提供了關于顯示的通用信息的方法,如顯示大小赎婚,分辨率等刘绣。

? 獲得屏幕分辨率和密度

? dp轉px

? px轉dp

? 獲得系統(tǒng)狀態(tài)欄高度

3、 dp\dip挣输、sp纬凤、px

px:像素。比如UI設計撩嚼、Android原生API都會以px作為統(tǒng)一的計量單位停士,像是獲取屏幕寬高等。

dip/dp:ensity Independent

Pixels的縮寫完丽,即密度-無關像素恋技。在Android中,規(guī)定以160dpi為基準逻族,1dip=1px蜻底,如果密度是320dpi,則1dip=2px聘鳞,以此類推朱躺。寫布局的時候要盡量使用dp而不是px刁赖。

sp:scale-independent pixels,與dp類似长搀,但是可以根據(jù)文字大小首選項進行放縮宇弛,是設置字體大小的御用單位。

4源请、 mdpi枪芒、hdpi、xhdpi谁尸、xxhdpi

mdpi舅踪、hdpi、xhdpi良蛮、xxhdpi抽碌、xxxhdpi用來修飾Android中的drawable文件夾及values文件夾,用來區(qū)分不同像素密度下的圖片和dimen值决瞳。

其實之前還有個ldpi货徙,但是隨著移動設備配置的不斷升級,這個像素密度的設備已經(jīng)很罕見了皮胡,所在現(xiàn)在適配時不需考慮痴颊。

nodpi,這個限定被用于不想根據(jù)匹配的設備分辨率進行縮放的位圖資源屡贺。

tvdpi蠢棱,在mdpi和hdpi之間的屏幕,大約是213dpi甩栈。大多數(shù)是為電視來考慮的泻仙。

級別 屏幕密度 dpi 屏幕比率 通常分辨率 px 圖標大小 px

ldpi 120 0.75

mdpi 160 1 320*480 48*48

hdpi 240 1.5 480*800 72*72

xhdpi 320 2 720*1280 96*96

xxhdpi 480 3 1080*1800 144*144

xxxhdpi 640 4 1200*1960 192*192

三 機型適配的解決方案

1、 屏幕適配

? 使用wrap_content量没、match_parent饰豺、weight

? 使用相對布局禁用絕對布局

? 盡量使用Fragment開發(fā)界面

? 使用尺寸限定符

mdpi、hdpi允蜈、xhdpi冤吨、xxhdpi、xxxhdpi \ small \ normal \ large \ xlarge

【備注】

layout-small(屏幕尺寸小于3英寸左右的布局)

layout-normal(屏幕尺寸小于4.5英寸左右)

layout-large(4英寸-7英寸之間)

layout-xlarge(7-10英寸之間)

? 使用最小寬度限定符

swdp 饶套、 wdp 漩蟆、 hdp

【備注】

在android3.2以前,所有的資源文件都有相應的xhdpi,hdpi,mdpi,ldpi四種文件來對應妓蛮,android3.2以后怠李,為了提供更精準的對布局文件的控制,可以通過為資源文件(res目錄下文件)增加后綴來指定該文件夾里的xml布局文件或color.xml,string.xml是為哪種大小的屏幕使用捺癞。

第一種后綴:swdp,如layout-sw600dp, values-sw600dp smallwidth

這里的sw代表smallwidth的意思夷蚊,當你所有屏幕的最小寬度都大于600dp時,屏幕就會自動到帶sw600dp后綴的資源文件里去尋找相關資源文件,這里的最小寬度是指屏幕寬高的較小值髓介,每個屏幕都是固定的惕鼓,不會隨著屏幕橫向縱向改變而改變。

第二種后綴wdp 如layout-w600dp, values-w600dp

帶這樣后綴的資源文件的資源文件制定了屏幕寬度的大于Ndp的情況下使用該資源文件唐础,但它和swdp不同的是箱歧,當屏幕橫向縱向切換時,屏幕的寬度是變化的一膨,以變化后的寬度來與N相比呀邢,看是否使用此資源文件下的資源。

第三種后綴hdp 如layout-h600dp, values-h600dp

這個后綴的使用方式和wdp一樣豹绪,隨著屏幕橫縱向的變化价淌,屏幕高度也會變化,根據(jù)變化后的高度值來判斷是否使用hdp

瞒津,因為屏幕在縱向上通常能夠滾動導致長度變化蝉衣,不像寬度那樣基本固定,google官方文檔建議盡量少使用這種方式仲智。

? 使用屏幕方向限定符land \ portrait

? 使用具體布局限定符,如layout-800x480

? 使用自動拉伸位圖(.9.png圖片)

“點九”是andriod平臺的應用軟件開發(fā)里的一種特殊的圖片形式姻氨,文件擴展名為:.9.png钓辆。

智能手機中有自動橫屏的功能,

,在界面改變方向后,界面上的圖形會因為長寬的變化而產(chǎn)生拉伸,造成圖形的失真變形。另外Android平臺有多種不同的分辨率肴焊,很多控件的切圖文件在被放大拉伸后前联,邊角會模糊失真。

在Android平臺下使用點九PNG技術娶眷,可以將圖片橫向和縱向同時進行拉伸似嗤,以實現(xiàn)在多分辨率下的完美顯示效果〗斐瑁“點九”的制作方法烁落,使用

“draw9patch”工具繪制,打開SDK/tools目錄下的“draw9patch.bat”文件豌注。

2伤塌、 版本適配

盡量使用能適應v4等這樣向下兼容的包

3、 語言自適應

多語言目錄:

values-en 英文

values-zh 中文

values-zh-rCN 簡體中文

values-zh-rTW 繁體中文

values-ja 日文

本文出自微信公眾號mjw-java轧铁,更多內(nèi)容關注微信公眾號或訪問www.moliying.com

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末每聪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌药薯,老刑警劉巖绑洛,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異童本,居然都是意外死亡真屯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門巾陕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來讨跟,“玉大人,你說我怎么就攤上這事鄙煤×澜常” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵梯刚,是天一觀的道長凉馆。 經(jīng)常有香客問我,道長亡资,這世上最難降的妖魔是什么澜共? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮锥腻,結果婚禮上嗦董,老公的妹妹穿的比我還像新娘。我一直安慰自己瘦黑,他們只是感情好京革,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著幸斥,像睡著了一般匹摇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上甲葬,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天廊勃,我揣著相機與錄音,去河邊找鬼经窖。 笑死坡垫,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的画侣。 我是一名探鬼主播葛虐,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼棉钧!你這毒婦竟也來了屿脐?” 一聲冷哼從身側響起涕蚤,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎的诵,沒想到半個月后万栅,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡西疤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年烦粒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片代赁。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡扰她,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芭碍,到底是詐尸還是另有隱情徒役,我是刑警寧澤,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布窖壕,位于F島的核電站忧勿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏瞻讽。R本人自食惡果不足惜鸳吸,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望速勇。 院中可真熱鬧晌砾,春花似錦、人聲如沸烦磁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽个初。三九已至乖寒,卻和暖如春猴蹂,著一層夾襖步出監(jiān)牢的瞬間院溺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工磅轻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留珍逸,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓聋溜,卻偏偏與公主長得像谆膳,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子撮躁,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容