Android屏幕適配

屏幕適配

養(yǎng)成良好的開發(fā)習(xí)慣://面試
    多用dp,sp,不用px; //sp是奇數(shù)和小數(shù)容易造成精度丟失
    多用線性布局和相對(duì)布局, 不用絕對(duì)布局; 
    代碼中如果必須設(shè)置像素的話, 將dp轉(zhuǎn)為px進(jìn)行設(shè)置

概念:
    屏幕尺寸:屏幕對(duì)角線的長(zhǎng)度胎围,單位是英寸,1 inch=2.54 cm
    屏幕大小:物理屏幕的大小,看屏幕的對(duì)角線
    分辨率 :實(shí)際上是像素的總和, 比如1280*720.1px=1個(gè)像素點(diǎn)
    dpi     :屏幕像素密度(每英寸所展示的像素,屏幕像素密度與屏幕尺寸和屏幕分辨率有關(guān).  屏幕尺寸越小柱衔、分辨率越高嚼贡,像素密度越大捉片,反之越小秩霍。)
    dp(dip) :屏幕密度無關(guān)像素   
    sp      :獨(dú)立比例像素
    px      :像素的單位. 比如UI設(shè)計(jì)齐婴、Android原生API都會(huì)以px作為統(tǒng)一的計(jì)量單位茄厘,像是獲取屏幕寬高等
  • 比率(根據(jù)dpi計(jì)算)
1.jpg
        分辨率         
    ldpi:   240*320     QVGA    0.75    ~120dpi
    mdpi:   320*240     HVGA    1       ~160dpi Android中標(biāo)準(zhǔn)的分辨率//baseline//1dp=1px
    hdpi:   480*800     WVGA    1.5     ~240dpi
    xhdpi:  1280*720    720P    2       ~320dpi
    xxhdpi: 1920*1080   1080p   3       ~480dpi
    xxxhdpi:3840×2160   4K      4       ~640dpi
1.png

(最后面附上dpi的計(jì)算)

屏幕適配問題的本質(zhì)

使得“布局”矮冬、“布局組件”、“圖片資源”次哈、“用戶界面流程”匹配不同的屏幕尺寸 
    根據(jù)屏幕的配置來加載相應(yīng)的UI布局胎署、用戶界面流程    
使得“圖片資源”匹配不同的屏幕密度

解決方案

全集:

1.png

主要:

圖片適配
    常規(guī)做法: 做一套圖 1280*720 切圖, 放在hdpi或xhdpi下, ImageView寬高指定為確定的值, 不包裹屏幕. 
                如果某個(gè)屏幕出了問題, 再針對(duì)該屏幕, 對(duì)相關(guān)出問題的圖片進(jìn)行替換.


layout布局文件適配(不太常用)
    layout-800x480:專門針對(duì)480*800屏幕適配的布局文件, 一般只調(diào)整位置和大小, 不建議對(duì)控件類型和個(gè)數(shù)進(jìn)行調(diào)整

尺寸適配(dimens,很常用)
    //dp 和 px
    dp = px/設(shè)備密度
        設(shè)備密度:float density = getResources().getDisplayMetrics().density;
    創(chuàng)建文件夾values-1280x720, 在dimens.xml中制定尺寸, 適配屏幕
        //values-1280x720/dimens.xml
    常規(guī)做法: 此方法比布局適配更常用. 美工提供像素px值, 我們使用前需要用px除以設(shè)備密度,轉(zhuǎn)換成dp后,寫在布局文件中


權(quán)重適配
    android:weightSum="3"http://父控件給予總和
    常規(guī)做法: 當(dāng)布局有嚴(yán)格比例分配時(shí), 可以使用權(quán)重來處理
    權(quán)重weight的計(jì)算
        寬度 = 原來寬度 + 權(quán)重比值 * 剩余寬度
        [1]當(dāng)layout_width為0dp,layout_weight分別是1和2
            第一個(gè)按鈕:寬度 = 0 + 1/3 * 屏寬 = 1/3屏寬
            第二個(gè)按鈕:寬度 = 0 + 2/3 * 屏寬 = 2/3屏寬

        [2]當(dāng)layout_width為match_parent, layout_weight分別是1和2
            第一個(gè)按鈕:寬度 = 屏寬 + 1/3 (屏寬 - 2 屏寬) = 2/3屏寬
            第二個(gè)按鈕:寬度 = 屏寬 + 2/3 (屏寬 - 2 屏寬) = 1/3屏寬
 
代碼適配
    通過LayoutParams//由這個(gè)空間的父控件來決定這個(gè)LayoutParams是誰的
    常規(guī)做法: 如果是自定義的控件, 沒有使用xml布局文件時(shí), 可以在代碼中動(dòng)態(tài)設(shè)置寬高

其他適配補(bǔ)充

布局控件匹配
    使用相對(duì)布局(RelativeLayout)窑滞,禁用絕對(duì)布局(AbsoluteLayout)


尺寸(size)限定符(large)
    只適合Android 3.2版本之前
        在平板電腦和電視的屏幕(>7英寸)上:實(shí)施“雙面板”模式以同時(shí)顯示更多內(nèi)容
            雙面板布局:res/layout-large/main.xml
        在手機(jī)較小的屏幕上:使用單面板分別顯示內(nèi)容
            單面板(默認(rèn))布局:res/layout/main.xml
        注意:兩個(gè)布局XML名稱均為main.xml

最小寬度(Smallest-width)限定符
    適合在Android 3.2及之后版本
        是以dp為標(biāo)準(zhǔn)的.
        適配尺寸>7寸平板的雙面板布局:res/layout-sw600dp/main.xml
            對(duì)于最小寬度≥ 600 dp 的設(shè)備
        適配手機(jī)的單面板(默認(rèn))布局:res/layout/main.xml
        注意:兩個(gè)布局XML名稱均為main.xml

dpi的計(jì)算

1.jpg
2.png
3.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末琼牧,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子哀卫,更是在濱河造成了極大的恐慌巨坊,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件此改,死亡現(xiàn)場(chǎng)離奇詭異趾撵,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)共啃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門占调,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人移剪,你說我怎么就攤上這事妈候。” “怎么了挂滓?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵苦银,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我赶站,道長(zhǎng)幔虏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任贝椿,我火速辦了婚禮想括,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘烙博。我一直安慰自己瑟蜈,他們只是感情好烟逊,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铺根,像睡著了一般宪躯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上位迂,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天访雪,我揣著相機(jī)與錄音,去河邊找鬼掂林。 笑死臣缀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泻帮。 我是一名探鬼主播精置,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼锣杂!你這毒婦竟也來了脂倦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤蹲堂,失蹤者是張志新(化名)和其女友劉穎狼讨,沒想到半個(gè)月后贝淤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柒竞,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年播聪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了朽基。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡离陶,死狀恐怖稼虎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情招刨,我是刑警寧澤霎俩,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站沉眶,受9級(jí)特大地震影響打却,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谎倔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一柳击、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧片习,春花似錦捌肴、人聲如沸蹬叭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽秽五。三九已至,卻和暖如春试幽,著一層夾襖步出監(jiān)牢的瞬間筝蚕,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工铺坞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留起宽,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓济榨,卻偏偏與公主長(zhǎng)得像坯沪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擒滑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

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