android多屏幕适配资源生成,android – 多屏幕适配相关
1、基本概念
屏幕大小(screen size)?– 屏幕的實際大小,用屏幕對角線長度來衡量(比如3.4寸,3.8寸)。android把屏幕分為以下4種:small,normal,large,extra large。
怎么判斷?
屏幕密度(Screen Density) -?一塊實際的屏幕區域有多少個像素,一般用dpi衡量(每英寸有多少個點)。相比起medium、high屏幕密度的設備,在一塊確定大小的屏幕區域l密度為low的屏幕擁有的像素更少。android把屏幕密度分為4種:low,medium,high,extra high。
如何判斷是ldpi,mdpi,hdpi?
方向(orientation) -?屏幕方向分為landscape(橫屏)和portrait(豎屏)。
分辨率(Resolution)?-??屏幕上的總實際像素數。對屏幕進行適配時,一般不關注它的分辨率,只關注它的屏幕大小和密度。
與密度無關的像素(Density-independent pixel,dp或dip)?-??為了保證你的UI適合不同的屏幕密度,建議你采用dp來定義程序UI。
它的計算方法為:px = dp * (dpi / 160)
sp(scale-independent pixel)
如何分辨一個屏幕是ldpi、mdpi、hdpi的方法,見下圖
計算屏幕密度
2、怎樣適配多種屏幕
a.在manifest里定義你的程序支持的屏幕類型,相應代碼如下:
android:smallScreens=["true" | "false"]?? //是否支持小屏
android:normalScreens=["true" | "false"]? //是否支持中屏
android:largeScreens=["true" | "false"]?? //是否支持大屏
android:xlargeScreens=["true" | "false"] ?//是否支持超大屏
android:anyDensity=["true" | "false"]??? //是否支持多種不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>
b.對不同大小的屏幕提供不同的layout。
比如,如果需要對大小為large的屏幕提供支持,需要在res目錄下新建一個文件夾layout-large/并提供layout。當然,也可以在res目錄下建立layout-port和layout-land兩個目錄,里面分別放置豎屏和橫屏兩種布局文件,以適應對橫屏豎屏自動切換。
c.對不同密度的屏幕提供不同的圖片。
應盡量使用點9格式的圖片,如需對密度為low的屏幕提供合適的圖片,需新建文件夾drawable-ldpi/,并放入合適大小的圖片。相應的,medium對應drawable-mdpi /,high對應drawable-hdpi/,extra high對應drawable-xhdpi/。
圖片大小的確定:low:medium:high:extra high比例為3:4:6:8。舉例來說,對于中等密度(medium)的屏幕你的圖片像素大小為48×48,那么低密度(low)屏幕的圖片大小應為36×36,高(high)的為72×72,extra high為96×96。
不同密度的屏幕對應的圖片比例
3、多屏幕適配的4條黃金原則
a.在layout文件中設置控件尺寸時應采用wrap_content,fill_parent和dp。
具體來說,設置view的屬性android:layout_width和android:layout_height的值時,wrap_content,fill_parent或dp比pix更好。相應地,為了使文字大小更好的適應屏幕應該使用sp來定義文字大小。
b.在程序的代碼中不要出現具體的像素值。
為了使代碼簡單,android內部使用pix為單位表示控件的尺寸,但這是基于當前屏幕基礎上的。為了適應多種屏幕,android建議開發者不要使用具體的像素來表示控件尺寸。
c.不要使用AbsoluteLayout(android1.5已廢棄)?。相應地,應使用RelativeLayout。
d.對不同的屏幕提供合適大小的圖片。見上面第2部分。
4、需要注意的地方
以上設置適用于android3.2以下的版本。(本人目前開發是在android2.2上,這部分以后再補充)
5、怎樣測試你的程序是否支持多屏幕適配
一般使用AVD Manager創建多個不同大小的模擬器,如下圖
問題:
測試時,發現應用在不同的顯示器上顯示效果不同(部分文本不能顯示完全),自然想到屏幕適配的問題。
按照思路整理如下:
(一) 幾個概念
1,?Screen size屏幕的尺寸,即對角線長度(單位inch-英寸)
2, Screen density屏幕密度,即單位長度像素點數(pots/inches)
3, Resolution 分辨率,即屏幕的總像素點數(width * height)
4, Density-independent pixel (dp)獨立像素密度。標準是160dip.即1dp對應1個pixel,計算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp對應 的像素點越多。
(二) 屏幕的分類(size & density)
1, 以總像素數分,文本的size等都要改,如下圖所示
每一個分類都有其最小分辨率,如下,可根據分辨率劃分種類:
2, 以屏幕密度分,提供不同的圖片如下圖所示
Note1:匹配以上面兩種為參考。
Note2:還有專為水平(landscape)和豎直(portrait)兩種,使用的少,在此不贅述。
(三) Android尋找最佳資源原理
1, 排除與設備設置不符合的資源
2, 根據限定詞(qualifier)的優先級,按照順序查找
3, 在限定詞下,是否存在資源路徑
4, 排除不包含在限定詞中的資源路徑
5, ?繼續執行不同的限定詞查找,直到找到相應的資源
如下圖所示:
(四) 項目步驟:
1, manufest中配置
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"?/>
2, 新建對應的資源文件夾
A, Layout
例如,我現在有三個顯示器分辨率:
分別為1280*720,1024*768,1200*690
根據以上最低分辨率的要求,分為xlarge和large兩類,新建兩個文件夾,如下:
如下圖所示:
B, Drawable
如下圖所示:
在drawable中,以mdpi為標準(即160dpi)。比例保持為3:4:5:6,如下圖所示:
總結
以上是生活随笔為你收集整理的android多屏幕适配资源生成,android – 多屏幕适配相关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android+点击屏幕隐藏键盘,And
- 下一篇: android读取网页标题,如何获取We