屏幕適配全攻略_第1頁
屏幕適配全攻略_第2頁
屏幕適配全攻略_第3頁
屏幕適配全攻略_第4頁
屏幕適配全攻略_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、三分鐘搞定安卓適配問題 Android屏幕適配出現的原因 重要概念 屏幕尺寸 屏幕分辨率 屏幕像素密度 dp dip dpi sp px mdpi hdpi xdpi xxdpi 解決方案 1、圖片適配 2、尺寸適配 3、布局適配 4、代碼適配 5、權重適配一:Android屏幕適配出現的原因由于Android系統(tǒng)的開放性,任何用戶、開發(fā)者、OEM廠商、運營商都可以對Android進行定制,修改成他們想要的樣子。但是這種“碎片化”到底到達什么程度呢?在2012年,OpenSignalMaps(以下簡稱OSM)發(fā)布了第一份Android碎片化報告,統(tǒng)計數據表明, 2012年,支持Android的

2、設備共有3997種。 2013年,支持Android的設備共有11868種。 2014年,支持Android的設備共有18796種。右邊這張圖片所顯示的內容足以充分說明當今Android系統(tǒng)碎片化問題的嚴重性,因為該圖片中的每一個矩形都代表著一種Android設備詳細的統(tǒng)計數據請到查看而隨著支持Android系統(tǒng)的設備(手機、平板、電視、手表)的增多,設備碎片化、品牌碎片化、系統(tǒng)碎片化、傳感器碎片化和屏幕碎片化的程度也在不斷地加深。而我們今天要探討的,則是對我們開發(fā)影響比較大的屏幕的碎片化。右一是Android屏幕尺寸的示意圖藍色矩形的大小代表不同尺寸,顏色深淺則代表所占百分比的大小。右二只是

3、4,4s,5,5c,5s和平板的尺寸,現在還應該加上新推出的iphone6和plus,但是和Android的屏幕碎片化程度相比而言,還是差的太遠二,重要概念1. 什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? u 屏幕尺寸:是指屏幕對角線的長度。單位是英寸,1英寸=2.54厘米; 比如常見的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等u 屏幕分辨率:是指在橫縱向上的像素點數,單位是px,1px=1像素點,一般是縱向像素橫向像素,如1280720; u 屏幕像素密度:是指每英寸上的像素點數,單位是dpi,即“dot per inch”的縮寫,像素密度和屏幕尺寸和屏幕分辨

4、率有關。在單一變化條件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。 u 三者關系例如:計算Nexus5的屏幕像素密度: 屏幕尺寸:4.95inch、分辨率:19201080,屏幕像素密度:445 2.dp、dip、dpi、sp、px px我們應該是比較熟悉的,前面的分辨率就是用的像素為單位,大多數情況下,比如UI設計、Android原生API都會以px作為統(tǒng)一的計量單位, dip和dp是一個意思,都是Density Independent Pixels的縮寫,即密度無關像素,上面我們說過,dpi是屏幕像素密度,假如一英寸里面有160個像素,這個屏幕的像素密度就是160dpi,那么在這

5、種情況下,dp和px如何換算呢?在Android中,規(guī)定以160dpi為基準,1dip=1px,如果密度是320dpi,則1dip=2px,以此類推。 sp,即scale-independent pixels,與dp類似,但是可以根據文字大小首選項進行放縮,是設置字體大小的御用單位。假如同樣都是畫一條480px的線,在720*1280分辨率手機上顯示為2/3屏幕寬度,在480*800的手機上則占滿了全屏,如果使用dp為單位,在這兩種分辨率下160dp都顯示為屏幕一般的長度。這也是為什么在Android開發(fā)中,寫布局的時候要盡量使用dp而不是px的原因。下頁圖例3. 什么是mdpi、hdpi、x

6、dpi、xxdpi、xxxdpi?如何計算和區(qū)分? 用于區(qū)分不同的像素密度?,F在主流的手機,都可以找到自己所在的屏幕密度檔次。比如一般來說720p的手機是xhdpi,1080p的是xxhdpi。還有一種情況,比如同樣都是4 英寸的480*800和4英寸的960*540,盡管實際算出來的dpi不一樣,但是都要歸到hdpi這一檔,dpi都變成了240,這是Android 系統(tǒng)做的一種近似處理,目的是為了簡化計算。也就是說,雖然實際上手機的密度有很多種,但是大家會找到自己的近似區(qū)間,然后用區(qū)間的代表值去做運算。根據前面講的屏幕密度區(qū)間,你可以記住這樣一個簡單的計算方法:dp 是一個虛擬的概念,是在程

7、序運行的時候算出來的。怎么理解呢?Android設備那么多,分辨率也那么多,直接學iOS用px做單位肯定不行的。為此 Google搞了一個叫dp的東西,換算公式是dp=(dpi/160)*px。也就是說,在密度為160dpi的屏幕上,1px就是1dp。依次類推, 在320dpi的屏幕上,1dp就是2px。屏幕密度越大,1個dp對應的px也就越多。二,解決方案-屏幕適配 1、圖片適配 2、尺寸適配 3、布局適配 4、代碼適配 5、權重適配1、圖片適配圖片的查找順序:ldpi 、mdpi 、 hdpi 、xhdpi、xxhdpi、xxxhdpi先找自己對應的文件夾,再往大的找,大的文件夾中沒有圖片

8、,就再往小的找例如mdpi(480*320)的手機,查找順序如下mdpi 、drawable 、 hdpi 、xhdpi、xxhdpi、xxxhdpi、ldip 2、尺寸適配 根據分辨率創(chuàng)建相應values文件夾, 比如 values-1280 x720 (大值在前) 在values文件夾下創(chuàng)建:dimens xml文件 在values-800 x480文件夾下創(chuàng)建:dimens xml文件 在values-1280 x720文件夾下創(chuàng)建:dimens xml文件代碼演示屏幕寬度的一半。相應的,在開發(fā)的時候,Google提供了一些資源目錄,你可以把對應大小的圖片放進去。舉個例子,你想展示一張1

9、00dp*100dp的圖片,那么在mdpi目錄下,你需要放100px*100px的原圖。在xxxhdpi下,這張圖片就得是 300px*300px。你的APP在運行的時候,如果需要加載這張圖片,系統(tǒng)就會根據當前手機的密度,去相應的資源目錄下去找。你可能會問,找不到怎么辦呢?比如當前是mdpi的手機,系統(tǒng)發(fā)現mdpi下沒有這張圖,就會去比mdpi更大的目錄找,然后進行縮放。實在找不到就去比mdpi更小的目錄找, 找到之后再拉伸。那么設計師在出圖的時候,有兩種方法可以選。一是按照官方的推薦方法,在上面所有目錄下各放置一份同樣的圖片,根據dp和px的換算關系切成不同的大小,讓系統(tǒng)自動去尋找最合適的圖

10、片。這種方法成倍的增加設計師的工作量不說,還會增加安裝包的體積,用戶下載的時候要多耗費流量。第二種方法是選一個基準的屏幕密度,比如xhdpi,720p。所有的資源都放在這里,讓系統(tǒng)自動 去縮放。這種方法呢,對于小屏幕的手機來說,因為要在運行的時候把一張大圖縮放成小圖,不如直接用小圖節(jié)省內存。對大屏幕的手機呢,比如你720p的圖拿 到1080p的手機去顯示,肯定會因為縮放而失真。綜合起來的話,我更傾向于第二種方法。具體選擇哪種屏幕密度做標準,你可以參考下Google官方的統(tǒng)計或者友盟上面的主流分辨率。3、布局適配和圖片適配差不多。我們可以為不同的屏幕創(chuàng)建不同的layout文件夾如果我們想讓大屏幕的手機顯示布局和別的手機不一樣,就可以再為大屏創(chuàng)建一個layout。根據分辨率創(chuàng)建layou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論