Android解析度適配心得

來源:互聯網
上載者:User

標籤:

  關於Android解析度適配,這個是Android開發很頭疼的一個問題,也需要花費相當一部分開發時間處理的一個問題,往往一個介面怎麼適配就得想半天,特別是新手,也經常有人問我是怎麼適配解析度的,我也不能幾句話說清楚,自己也在研究中。

  其實,我覺得解析度適配,不只是研發單方面的事情,與產品、UI設計師也有很大關聯。首先產品必須瞭解一點Android布局以及解析度適配的知識,設計的介面布局可以盡量簡潔一點,介面顯示效果盡量稀疏一點,考慮到各個尺寸的手機每個介面的顯示情況。其次,UI設計師設計時,也最好先定義一些層級的尺寸,例如一個應用的所有文字大小隻有6個層級,所有介面的設計都盡量在這6個層級中選取,不要每個介面文字都不同,這樣終端如果在設定檔裡配置文字大小,就只需要6個配置了,另外,按鈕背景等的切圖,能不使用色彩坡形就不使用色彩坡形,這樣終端可以使用.9.png的圖片,既減小apk的尺寸,又節約應用記憶體。

  解析度適配必須瞭解的知識:

  Supporting Multiple Screens :http://wiki.eoeandroid.com/Supporting_Multiple_Screens

  Providing Resources :http://wiki.eoeandroid.com/Providing_Resources

  

  我覺得解析度適配的主要的幾種方式:

  1、通過設定檔適配解析度:

  控制項尺寸,我覺得可以以螢幕寬度作為參考,一般手機螢幕比例差不多是320*480,如果一個控制項的高度大約是螢幕總高度的0.1,就就差不多是寬度的0.1*1.5倍。

  例如,文字大小,可以以螢幕寬度做參考,定義幾個層級的大小(sw為螢幕寬度):

  textsize1 = 23    (0.036*sw,列表3級)  textsize2 = 32    (0.050*sw,列表2級)  textsize3 = 37    (0.058*sw,列表1級)  textsize4 = 45    (0.070*sw,標題)  textsize5 = 56    (0.088*sw,特大)  然後應用中盡量使用這幾個文字大小。    設定檔,可以定義以下幾個設定檔:  values-small(可以當做sw300計算)  values-normal(可以當做sw320計算)  values-large(可以當做sw480計算)  values-xlarge(可以當做sw720計算)  values-sw300dp(sw=300dp,以下相同)  values-sw320dp  values-sw340dp  values-sw360dp  values-sw400dp  values-sw480dp  values-sw520dp  values-sw600dp  values-sw720dp  前4個是相容api13以前的手機,api13以後就支援sw屬性了,sw320dp附近的大小間隔可以精細點,因為大多數螢幕寬度都是320dp-360dp範圍內,基本按照這個配置讀取到的螢幕寬度和實際螢幕寬度相差很小了。  定義這些比例,以及計算所有檔案夾得配置大小,需要比較多的時間,但是只要配置完了,以後開發解析度適配就會快速容易很多了。   參考配置:
    <dimen name="screen_h_0_02">9.6dp</dimen>    <dimen name="screen_h_0_04">19.2dp</dimen>    <dimen name="screen_h_0_06">28.8dp</dimen>    <dimen name="screen_h_0_08">38.4dp</dimen>    <dimen name="screen_h_0_1">48dp</dimen> <!-- sw*0.15 -->    <dimen name="screen_h_0_2">96dp</dimen>    <dimen name="screen_h_0_3">144dp</dimen>    <dimen name="screen_h_0_4">192dp</dimen>    <dimen name="screen_h_0_5">240dp</dimen>    <dimen name="screen_h_0_6">288dp</dimen>     <dimen name="screen_h_0_7">336dp</dimen>    <dimen name="screen_h_0_8">384dp</dimen>    <dimen name="screen_w_0_1">32dp</dimen>    <dimen name="screen_w_0_2">64dp</dimen>    <dimen name="screen_w_0_3">96dp</dimen>    <dimen name="screen_w_0_4">128dp</dimen>    <dimen name="screen_w_0_5">160dp</dimen>    <dimen name="screen_w_0_6">162dp</dimen>    <dimen name="screen_w_0_7">224dp</dimen>    <dimen name="screen_w_0_8">256dp</dimen>    <dimen name="screen_w_0_9">288dp</dimen>    <dimen name="screen_w">320dp</dimen>   <!-- 文字 -->    <!-- 0.030*sw,列表3級 -->    <dimen name="com_textsize_small">9.6dp</dimen>    <!-- 0.042*sw,列表2級 -->    <dimen name="com_textsize_medium_small">13.4dp</dimen>    <!-- 0.049*sw,列表1級 -->    <dimen name="com_textsize_medium">15.7dp</dimen>    <!-- 0.059*sw,標題 -->    <dimen name="com_textsize_medium_large">18.9dp</dimen>    <!-- 0.074*sw,特大 -->    <dimen name="com_textsize_large">23.7dp</dimen>    <!-- 按鈕 -->    <!-- 0.081*sw,純文字 -->    <dimen name="com_btn_h_medium_small">26dp</dimen>    <!-- 0.100*sw,短按鈕 -->    <dimen name="com_btn_h_medium">32dp</dimen>    <!-- 0.125*sw,長按鈕 -->    <dimen name="com_btn_h_medium_large">40dp</dimen>    <!-- 0.144*sw,特大 -->    <dimen name="com_btn_h_large">46dp</dimen>   <!-- 間距 -->    <!-- 0.025*sw -->    <dimen name="com_padding_small">8dp</dimen>    <!-- 0.031*sw,activity padding -->    <dimen name="com_padding_medium_small">10dp</dimen>    <!-- 0.050*sw,上邊距 -->    <dimen name="com_padding_medium">16dp</dimen>    <!-- 0.069*sw,模組間距 -->    <dimen name="com_padding_medium_large">22.1dp</dimen>    <!-- 0.094*sw,特大 -->    <dimen name="com_padding_large">30.1dp</dimen>

  ......

 

  2.代碼控制  級根據控制項實際可申請到的空間大小,以及內容多少,進行代碼控制大小。  例如一個文字自適應的開原始檔控制:https://github.com/grantland/android-autofittextview    先分享這麼多,以後發現有更好的適配方式,再分享。  如果大家有更好的適配方法,歡迎討論指教。 

 

Android解析度適配心得

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.