1. 程式人生 > >Android-螢幕適配全攻略(絕對詳細)(一)

Android-螢幕適配全攻略(絕對詳細)(一)

前言:這篇文章依然是我在 慕課網 學習 凱子哥 的同名視訊 Android-螢幕適配全攻略 ,所記錄下來的筆記—凱子哥講得真的超詳細。

2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常不利於我們進行螢幕適配。這要求我們必須掌握螢幕適配技能,以便使我們的app可以適用於不同螢幕尺寸的裝置上。

Android裝置解析度比例
從上圖可以看出,主流的解析度是前六種:1280×720、1920×1080、800×480、854×480、960×540、1184×720,不過我們有解決方案。看完這篇文章,想必你就可以解決常見的螢幕適配問題。

接下來正式進入正題。

一. 核心概念與單位詳解
介紹幾個在Android螢幕適配上非常重要的名詞:

  1. 什麼是螢幕尺寸、螢幕解析度、螢幕畫素密度?
    螢幕尺寸是指螢幕對角線的長度。單位是英寸,1英寸=2.54釐米
    螢幕解析度是指在橫縱向上的畫素點數,單位是px,1px=1畫素點,一般是縱向畫素橫向畫素,如1280×720
    螢幕畫素密度是指每英寸上的畫素點數,單位是dpi,即“dot per inch”的縮寫,畫素密度和螢幕尺寸和螢幕解析度有關

螢幕畫素密度計算公式

例如:計算Nexus5的螢幕畫素密度:
螢幕尺寸:4.95inch、解析度:1920×1080,螢幕畫素密度:445

和官方給出的一樣,說明我們計算正確。

  1. 什麼是dp、dip、dpi、sp、px?之間的關係是什麼?
    dip:Density Independent Pixels(密度無關畫素)的縮寫。以160dpi為基準,1dp=1px
    dp:同dip
    dpi:螢幕畫素密度的單位,“dot per inch”的縮寫

px:畫素,物理上的絕對單位

sp:Scale-Independent Pixels的縮寫,可以根據文字大小首選項自動進行縮放。Google推薦我們使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇數和小數。

dp的特點

說明:如果A裝置的引數為480×320,160dpi,B設定的引數為800×480,240dpi。我們要畫出一條和螢幕寬度一樣長的直線,如果使用px作為單位,必須在A裝置上設定為320px,在B裝置上設定480px。但是如果我們使用dp作為單位,由於以160dpi為基準,1dp=1px,所以A裝置上設定為320dp就等於螢幕寬度(320px),在B裝置上設定為320dp就等於320×(240/160)=480px,即B裝置的螢幕寬度。這樣,使用dp作為單位就可以實現簡單的螢幕適配。這知識一種巧合,也有B裝置的畫素密度不是這樣剛剛好的,就需要我們運用別的螢幕適配技術。

  1. 什麼是mdpi、hdpi、xdpi、xxdpi、xxxdpi?如何計算和區分?
    用於區分不同的畫素密度。

名稱 畫素密度範圍 圖片大小
mdpi 120dp~160dp 48×48px
hdpi 160dp~240dp 72×72px
xhdpi 240dp~320dp 96×96px
xxhdpi 320dp~480dp 144×144px
xxxhdpi 480dp~640dp 192×192px

[email protected]

在Google官方開發文件中,說明了 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 的尺寸比例進行縮放。例如,一個圖示的大小為48×48dp,表示在mdpi上,實際大小為48×48px,在hdpi畫素密度上,實際尺寸為mdpi上的1.5倍,即72×72px,以此類推。

二. 解決方案-支援各種螢幕尺寸
我們可以通過以下幾種方式來支援各種螢幕尺寸:

  1. 使用wrap_content、math_parent、weight
    wrap_content:根據控制元件的內容設定控制元件的尺寸
    math_parent:根據父控制元件的尺寸大小設定控制元件的尺寸
    weight:權重,線上性佈局中可以使用weight屬性設定控制元件所佔的比例

例如,我們要實現下圖所顯示的效果:當螢幕尺寸改變時,new reader控制元件兩邊的控制元件大小不變,new reader控制元件會佔完剩餘的空間。

效果圖

實現:通過給new reader控制元件設定屬性:android:layout_width=”wrap_content”,android:layout_weight=”1”,兩邊兩個控制元件為固定大小,android:layout_weight=”0”

具體佈局檔案如下:

相關推薦

Android-螢幕絕對詳細

Android-螢幕適配全攻略(絕對詳細)(二) 關鍵字:非密度制約畫素(dp、sp) 螢幕適配最佳實踐 前言:這篇文章接著 上一篇 繼續講,上篇講到了螢幕適配的核心概念與單位和一種解決方案:解決方案-支援各種螢幕尺寸。本篇繼續講剩餘的其他兩種解

Android-螢幕絕對詳細

(一) 關鍵字:螢幕適配 px dp dpi sp large限定符 .9.png 2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常

Android-螢幕絕對詳細

前言:這篇文章依然是我在 慕課網 學習 凱子哥 的同名視訊 Android-螢幕適配全攻略 ,所記錄下來的筆記—凱子哥講得真的超詳細。 2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非

Android螢幕(最權威的官方指導)

Android的螢幕適配一直以來都在折磨著我們這些開發者,本篇文章以Google的官方文件為基礎,全面而深入的講解了Android螢幕適配的原因、重要概念、解決方案及最佳實踐,我相信如果你能認真的學習本文,對於Android的螢幕適配,你將有所收穫! Android螢幕適配出現的原因

Android螢幕2-我想跟美工談談

[TOC] 前言 俗話說完事開頭難 對一個Android開發而言,專案正式開發的第一步就是拿到圖(高清圖和具體切圖)。第一步至關重要,UI圖做得好、標準高,後面的開發更傾向於按照高的標準去要求自己,開了個好頭。UI本身就做得很爛,很多不合理的設計互動,

Android-螢幕(轉)

2012年到2014年支援Android裝置的種類從3997增長到18796。同時各大廠商定製的螢幕尺寸也非常多。這將非常不利於我們進行螢幕適配。這要求我們必須掌握螢幕適配技能,以便使我們的app可以適用於不同螢幕尺寸的裝置上。 從上圖可以看出,主流的解析度是前六種:128

Android螢幕1-從dp、sp、px說起

[TOC] 初衷 現在寫App有些麻木的感覺,每天上班感覺提不起精神,專案和市場上同類產品競比還有很多做得不好的地方,但是就算知道了也沒什麼激情去改正。技術細節感覺很凌亂,不成體系,這讓我非常煩惱。所以希望通過寫Blog去實現: 督促自己。把技術和程

Android權威官方螢幕

Android的螢幕適配一直以來都在折磨著我們這些開發者,本篇文章以Google的官方文件為基礎,全面而深入的講解了Android螢幕適配的原因、重要概念、解決方案及最佳實踐,我相信如果你能認真的學習本文,對於Android的螢幕適配,你將有所收穫!

Android筆記之螢幕

Android螢幕適配出現的原因 在我們學習如何進行螢幕適配之前,我們需要先了解下為什麼Android需要進行螢幕適配。 由於Android系統的開放性,任何使用者、開發者、OEM廠商、運營商都可以對Android進行定製,修改成他們想要的樣子。

Android知識梳理之螢幕

       引言: 我相信Android碎片化問題是讓所有的Android開發者都比較頭疼的問題.尤其是螢幕適配這一塊兒.想要自己的app在不同的裝置上面都有一個比較好的顯示效果.就必須做好相應的螢幕適配.本文是結合網上的相關知識總結、官方文件結合自己的一些理解來進行闡述

Andoid螢幕

在我們學習如何進行螢幕適配之前,我們需要先了解下為什麼Android需要進行螢幕適配。 由於Android系統的開放性,任何使用者、開發者、OEM廠商、運營商都可以對Android進行定製,修改成他們想要的樣子。 但是這種“碎片化”到底到達什麼

Android 劉海屏

本文由玉剛說寫作平臺提供寫作贊助,版權歸玉剛說微信公眾號所有 原作者:四月葡萄 版權宣告:未經玉剛說許可,不得以任何形式轉載 1.前言 先吐槽一下,劉海屏真醜。然而作為苦逼的開發者,還是要去適配劉海屏的。好了,吐槽完畢,進入正題。 這裡主要是介

Andriod界面設計的分辨率和尺寸 轉載

復雜 分別是 太差 content 基礎 hdp art 發布 一點 Andriod界面設計的分辨率和尺寸適配全攻略 轉載 2016年09月27日 17:45:56 第一、屏幕尺寸: 一般表示是手機的實際物理尺寸,屏幕尺寸指屏幕的對角線的長度,單位是英寸,1英寸

android螢幕3-動態獲取手機螢幕寬高及動態設定控制元件寬高

1.獲取手機螢幕寬高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.width

android螢幕2--支援手機各種螢幕密度dpi

如何為不同密度的螢幕提供不同的資源和使用密度獨立的單位。 1 使用密度無關畫素 堅決杜絕在佈局檔案中使用絕對畫素來定位和設定大小。因為不同的螢幕有不同的畫素密度,所以使用畫素來設定控制元件大小是有問題的,在不同的裝置上同樣的畫素可能代表不同的物理螢幕尺寸,所以當使用尺寸的時候,總是使用dp或者sp,dp是相對

Android-螢幕

螢幕適配,是一個常見的問題,平常看的比較多,先寫這個了,過段時間在寫寫替他的一些適配問題了 Android開發指導的網站,有詳細的資料可以研究下. 一:基本單位 螢幕尺寸:對角線一英寸=2.54cm 解析度:橫縱上面畫素點數 螢幕畫素密度:每英寸畫素點數

Android 開發:Android螢幕經驗談

1.名詞解釋 螢幕尺寸: 也就是我們平時所說的某某手機是幾寸屏, 比如HTC one V這款手機是3.7寸的, 這裡的寸說的是英寸(inch),國際上習慣使用的單位,1inch = 2.54cm,3.7寸指的是螢幕的對角線的長度。 螢幕解析度:

Android 螢幕簡單、成本低

Android機型各種各樣,在適配的過程中不僅要考慮解析度、長寬比、還要考慮螢幕密度,尤其是螢幕密度會導致不同手機上的顯示效果不同,有一種比較好的適配方式,在適配中通過density換算可以實現在所有所有手機上寬度都視為360dp,高度則按寬度的放大縮小比例去放大和縮小,這是豎屏的情況,橫屏則可以將

Android螢幕dp、px、dpi、sp的理解

在Android開發過程中,螢幕適配往往是開發人員比較忽視的一個知識點。往往這些被忽視的東西在遇到問題的時候會耗費你比較多的時間。所以對於初級程式設計師來說理解掌握適配的一些基本知識是必須的。(大牛請

Android螢幕個人的點點總結及經驗

前言:做Android已經一段時間了,可是當別人問到我Android中的螢幕適配的時候,感覺自己有一種似懂非懂的感覺,這就有點尷尬了~~哈哈!還有就是ui跑過來問你要切什麼樣子的圖的時候,總要解釋半天,讓別人感覺你好不專業啊,所以為了更好的理解android的螢