關(guān)鍵字: 屏幕適配 px dp dpi sp large限定符 .9.png

成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作介紹好的網(wǎng)站是理念、設(shè)計(jì)和技術(shù)的結(jié)合。創(chuàng)新互聯(lián)擁有的網(wǎng)站設(shè)計(jì)理念、多方位的設(shè)計(jì)風(fēng)格、經(jīng)驗(yàn)豐富的設(shè)計(jì)團(tuán)隊(duì)。提供PC端+手機(jī)端網(wǎng)站建設(shè),用營銷思維進(jìn)行網(wǎng)站設(shè)計(jì)、采用先進(jìn)技術(shù)開源代碼、注重用戶體驗(yàn)與SEO基礎(chǔ),將技術(shù)與創(chuàng)意整合到網(wǎng)站之中,以契合客戶的方式做到創(chuàng)意性的視覺化效果。
前言: 這篇文章依然是我在 [慕課網(wǎng) ][h]學(xué)習(xí) 凱子哥 的同名視頻 Android-屏幕適配全攻略 ,所記錄下來的筆記---凱子哥講得真的超詳細(xì)。
[h]: "MOOC"
從上圖可以看出,主流的分辨率是前六種:1280×720、1920×1080、800×480、854×480、960×540、1184×720,不過我們有解決方案。看完這篇文章,想必你就可以解決常見的屏幕適配問題。
接下來正式進(jìn)入正題。
介紹幾個(gè)在Android屏幕適配上非常重要的名詞:
屏幕尺寸 是指屏幕對(duì)角線的長度。單位是英寸,1英寸=2.54厘米
屏幕分辨率 是指在橫縱向上的像素點(diǎn)數(shù),單位是px,1px=1像素點(diǎn),一般是縱向像素橫向像素,如1280×720
屏幕像素密度 是指每英寸上的像素點(diǎn)數(shù),單位是dpi,即“dot per inch”的縮寫,像素密度和屏幕尺寸和屏幕分辨率有關(guān)
dip: Density Independent Pixels(密度無關(guān)像素)的縮寫。以 160dpi 為基準(zhǔn),1dp=1px
dp: 同 dip
dpi: 屏幕像素密度的單位,“dot per inch”的縮寫
px: 像素,物理上的絕對(duì)單位
sp: Scale-Independent Pixels的縮寫,可以根據(jù)文字大小首選項(xiàng)自動(dòng)進(jìn)行縮放。Google推薦我們使用12sp以上的大小,通常可以使用12sp,14sp,18sp,22sp,最好不要使用奇數(shù)和小數(shù)。
用于區(qū)分不同的像素密度。
在Google官方開發(fā)文檔中,說明了 ** mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8 ** 的尺寸比例進(jìn)行縮放。例如,一個(gè)圖標(biāo)的大小為48×48dp,表示在mdpi上,實(shí)際大小為48×48px,在hdpi像素密度上,實(shí)際尺寸為mdpi上的1.5倍,即72×72px,以此類推。
我們可以通過以下幾種方式來支持各種屏幕尺寸:
wrap_content: 根據(jù)控件的內(nèi)容設(shè)置控件的尺寸
math_parent: 根據(jù)父控件的尺寸大小設(shè)置控件的尺寸
weight: 權(quán)重,在線性布局中可以使用weight屬性設(shè)置控件所占的比例
例如,我們要實(shí)現(xiàn)下圖所顯示的效果:當(dāng)屏幕尺寸改變時(shí),new reader控件兩邊的控件大小不變,new reader控件會(huì)占完剩余的空間。
具體布局文件如下:
小插曲: 關(guān)于 android:layout_weight 屬性
一般情況,我們都是設(shè)置要進(jìn)行比例分配的方向的寬度為0dp,然后再用權(quán)重進(jìn)行分配。如下:
效果為:
效果為:
button1寬度=L+(L-2L)×1/3=2/3L
button2寬度=L+(L-2L)×2/3=1/3L
當(dāng)然,還有其他的方式,都可以運(yùn)用此公式進(jìn)行計(jì)算。
在實(shí)際開發(fā)中,我們一般使用0dp的方式,而不使用其他方式。
簡單的布局一般都使用 線性布局 ,而略微復(fù)雜點(diǎn)的布局,我們使用 相對(duì)布局 ,大多數(shù)時(shí)候,我們都是使用這兩種布局的嵌套。
我們使用 相對(duì)布局 的原因是, 相對(duì)布局 能在各種尺寸的屏幕上保持控件間的相對(duì)位置。
res/layout/main.xml 單面板:
res/layout-large/main.xml 雙面板:
如果這個(gè)程序運(yùn)行在屏幕尺寸大于7inch的設(shè)備上,系統(tǒng)就會(huì)加載 res/layout-large/main.xml 而不是 res/layout/main.xml ,在小于7inch的設(shè)備上就會(huì)加載 res/layout/main.xml 。
需要注意的是,這種通過 large 限定符分辨屏幕尺寸的方法,適用于android3.2之前。在android3.2之后,為了更精確地分辨屏幕尺寸大小,Google推出了最小寬度限定符。
res/layout-sw600dp/main.xml ,雙面板布局: Small Width 最小寬度
這種方式是不區(qū)分屏幕方向的。這種最小寬度限定符適用于android3.2之后,所以如果要適配android全部的版本,就要使用 large 限定符和 sw600dp 文件同時(shí)存在于項(xiàng)目 res 目錄下。
這就要求我們維護(hù)兩個(gè)相同功能的文件。為了避免繁瑣操作,我們就要使用布局別名。
由于后兩個(gè)文具文件一樣,我們可以用以下兩個(gè)文件代替上面三個(gè)布局文件:
res/layout/main.xml 單面板布局
res/layout/main_twopanes.xml 雙面板布局
然后在 res 下建立
res/values/layout.xml 、
res/values-large/layout.xml 、
res/values-sw600dp/layout.xml 三個(gè)文件。
默認(rèn)布局
res/values/layout.xml :
Android3.2之前的平板布局
res/values-large/layout.xml :
Android3.2之后的平板布局
res/values-sw600dp/layout.xml :
這樣就有了 main 為別名的布局。
在activity中 setContentView(R.layout.main);
這樣,程序在運(yùn)行時(shí),就會(huì)檢測(cè)手機(jī)的屏幕大小,如果是平板設(shè)備就會(huì)加載 res/layout/main_twopanes.xml ,如果是手機(jī)設(shè)備,就會(huì)加載 res/layout/main.xml 。我們就解決了只使用一個(gè)布局文件來適配android3.2前后的所有平板設(shè)備。
如果我們要求給橫屏、豎屏顯示的布局不一樣。就可以使用 屏幕方向限定符 來實(shí)現(xiàn)。
例如,要在平板上實(shí)現(xiàn)橫豎屏顯示不用的布局,可以用以下方式實(shí)現(xiàn)。
res/values-sw600dp-land/layouts.xml :橫屏
res/values-sw600dp-port/layouts.xml :豎屏
自動(dòng)拉伸位圖,即android下特有的 .9.png 圖片格式。
當(dāng)我們需要使圖片在拉伸后還能保持一定的顯示效果,比如,不能使圖片中的重要像素拉伸,不能使內(nèi)容區(qū)域受到拉伸的影響,我們就可以使用 .9.png 圖來實(shí)現(xiàn)。
要使用 .9.png ,必須先得創(chuàng)建 .9.png 圖片,androidSDK給我們提供了的工具就包含 .9.png 文件的創(chuàng)建和修改工具。雙擊 SDK安裝目錄 oolsdraw9patch.bat ,就會(huì)打開下圖所示的窗口。
下面是一個(gè)例子:
Button屬性設(shè)置:
如果我們選擇的內(nèi)容區(qū)域偏差太大,可能就不會(huì)顯示出text值 BUTTON 。
好了,這篇文章寫的有點(diǎn)多了,剩下的內(nèi)容放在 下篇文章 記錄吧。
內(nèi)容提要:
解決方案-支持各種屏幕密度
解決方案-實(shí)施自適應(yīng)用戶界面流程
未完待續(xù)
Android Q 也就是 Andriod 10 對(duì)應(yīng)的 api為29
App要適配的話主要通過設(shè)置下面的style:
以及使用此屬性 ?android:attr/textColorPrimary
另外谷歌提供了一個(gè) Force Dark開關(guān)
具體信息可查看 Q暗黑模式Google官方介紹
Android 10 可控制無需用戶確認(rèn)按鍵
setConfirmationRequired(false)
當(dāng)用戶的生物識(shí)別不可用時(shí),可以設(shè)置 setDeviceCredentialAllowed() 允許用戶使用PIN、手勢(shì)密碼、數(shù)字密碼來通過認(rèn)證。
(1) 適配分為2種
(2) 谷歌及各大應(yīng)用市場對(duì)于適配的時(shí)間要求:
如果我們項(xiàng)目原本的api是25 ,要直接升到 api29,我們就需要進(jìn)行:Andoird O、Android P、Android Q適配,三個(gè)適配階段都需要。
下面會(huì)簡要介紹下這幾個(gè)api的適配:
創(chuàng)建通知前需要?jiǎng)?chuàng)建渠道,創(chuàng)建通知時(shí)需要傳入 channelId。
2.1 什么是前臺(tái)應(yīng)用?(這里的前臺(tái)應(yīng)用指的是對(duì)于Service限制來說)
2.2 什么是后臺(tái)服務(wù)限制?
2.3 解決方案:
設(shè)置了透明主題的Activity,再設(shè)置屏幕方向
拋出以下異常
推測(cè)是Google8.0手機(jī)的bug,在之后的版本已經(jīng)修復(fù)。
3.2.1 webview數(shù)據(jù)目錄變更
如果在api設(shè)置為28后,多進(jìn)程使用同一個(gè)目錄webView
拋出異常:
解決:為不同的進(jìn)程設(shè)置不同的webview數(shù)據(jù)目錄
3.2.2 Apache HTTP客戶端棄用
在 Android 6.0 中,谷歌取消了對(duì) Apache HTTP 客戶端的支持。 從 Android 9 開始,默認(rèn)情況下該內(nèi)容庫已從 bootclasspath 中移除且不可用于應(yīng)用。要繼續(xù)使用 Apache HTTP 客戶端,以 Android 9 及更高版本為目標(biāo)的應(yīng)用可以向其 AndroidManifest.xml 添加以下內(nèi)容:
3.2.3 非sdk接口管控
官方檢查器veridex用來檢測(cè)一個(gè)apk中哪里使用了非SDK接口。
掃描結(jié)果類似于下圖(圖片來自 Android P版本 (七)veridex工具掃描非 SDK 接口 ,veridex使用方法也可以參考此文):
3.2.4 前臺(tái)服務(wù)
針對(duì) Android 9 或更高版本并使用前臺(tái)服務(wù)的應(yīng)用需要請(qǐng)求 FOREGROUND_SERVICE 權(quán)限,系統(tǒng)會(huì)自動(dòng)為請(qǐng)求權(quán)限的應(yīng)用授予此權(quán)限。如果針對(duì) Android 9 或更高版本的應(yīng)用嘗試創(chuàng)建一個(gè)前臺(tái)服務(wù)且未請(qǐng)求 FOREGROUND_SERVICE ,則系統(tǒng)會(huì)引發(fā) SecurityException 。
3.3.1應(yīng)用存儲(chǔ)空間變更
默認(rèn)情況下,如果應(yīng)用以 Android Q 為目標(biāo)平臺(tái),則在訪問外部存儲(chǔ)設(shè)備中的文件時(shí)會(huì)進(jìn)入過濾視圖。應(yīng)用可以使用· Context.getExternalFilesDir() ·將專用于自己的文件存儲(chǔ)在特定于自己的目錄中。具有過濾視圖的應(yīng)用對(duì)其創(chuàng)建的文件始終擁有讀/寫權(quán)限,無論文件位于特定于此應(yīng)用的目錄以內(nèi)還是以外。應(yīng)用無需聲明任何存儲(chǔ)權(quán)限即可訪問這些文件。
只有在滿足以下兩個(gè)條件時(shí),應(yīng)用才能訪問其他應(yīng)用創(chuàng)建的文件:
Google Q版本應(yīng)用兼容性整改指導(dǎo)
華為開發(fā)者聯(lián)盟文檔中心
Google Android-8.0-migration
Android 適用于眾多類型的設(shè)備,從手機(jī)到平板電腦和電視都能搭載使用。作為開發(fā)者,如此廣泛的設(shè)備類型能為您的應(yīng)用帶來廣大的潛在受眾群體。為了能在所有這些設(shè)備上順利運(yùn)行,應(yīng)用應(yīng)該容許部分設(shè)備功能的變化,并提供可適應(yīng)不同屏幕配置的靈活界面。
隨著您進(jìn)一步閱讀 Android 開發(fā)相關(guān)內(nèi)容,您可能會(huì)在各種語境下遇到“兼容性”一詞。兼容性有兩種類型:設(shè)備兼容性和應(yīng)用兼容性。
作為應(yīng)用開發(fā)者,您無需擔(dān)心設(shè)備是否兼容 Android,因?yàn)橹挥信c Android 兼容的設(shè)備才會(huì)附帶 Google Play 商店或該設(shè)備的官方手機(jī)應(yīng)用市場。因此,您可以放心,通過Google Play 商店和官方手機(jī)應(yīng)用市場安裝您的應(yīng)用的用戶使用的是 Android 兼容設(shè)備。
不過,您確實(shí)需要考慮您的應(yīng)用是否兼容每一種可能的設(shè)備配置。由于 Android 以各種設(shè)備配置運(yùn)行,因此部分功能并不適用于所有設(shè)備。例如,某些設(shè)備可能未配備羅盤傳感器。如果應(yīng)用的核心功能需要使用羅盤傳感器,那么應(yīng)用只能與帶有羅盤傳感器的設(shè)備兼容。
應(yīng)用可通過平臺(tái) API 利用 Android 支持的各種功能。有些功能基于硬件(例如羅盤傳感器),有些功能基于軟件(如應(yīng)用窗口微件),有些功能則依賴于平臺(tái)版本。并非每臺(tái)設(shè)備都支持所有功能,因此您可能需要根據(jù)應(yīng)用所需的功能控制應(yīng)用在設(shè)備上的可用性。
要盡可能擴(kuò)大應(yīng)用的用戶群,您應(yīng)設(shè)法使用單個(gè) APK 支持盡可能多的設(shè)備配置。在大多數(shù)情況下,要實(shí)現(xiàn)這一目標(biāo),您可以在運(yùn)行時(shí)停用可選功能,并為應(yīng)用資源提供針對(duì)不同配置的替代選項(xiàng)(例如針對(duì)不同屏幕尺寸的不同布局)。不過,如果需要,您可以根據(jù)以下設(shè)備特征,通過 Google Play 商店限制應(yīng)用在設(shè)備上的可用性:
為了讓您根據(jù)設(shè)備功能管理應(yīng)用的可用性,Android 為可能并不適用于所有設(shè)備的任何硬件或軟件功能定義了功能 ID。例如,羅盤傳感器的功能 ID 為 FEATURE_SENSOR_COMPASS,而應(yīng)用微件的功能 ID 為 FEATURE_APP_WIDGETS。
根據(jù)需要,要在用戶的設(shè)備不具備特定功能時(shí)阻止用戶安裝您的應(yīng)用,您可以通過應(yīng)用清單文件中的uses-feature元素聲明這一點(diǎn)。
例如,如果您的應(yīng)用在沒有羅盤傳感器的設(shè)備上沒有意義,您可以使用以下清單標(biāo)記聲明需要羅盤傳感器:
Google Play 商店會(huì)將您的應(yīng)用所需的功能與每個(gè)用戶的設(shè)備上可用的功能進(jìn)行比較,以確定您的應(yīng)用是否與每臺(tái)設(shè)備兼容。如果設(shè)備不具備您的應(yīng)用所需的所有功能,則用戶無法安裝您的應(yīng)用。
但是,如果應(yīng)用的主要功能不需要某項(xiàng)設(shè)備功能,則應(yīng)將required屬性設(shè)置為 "false"并在運(yùn)行時(shí)檢查是否有該設(shè)備功能。如果應(yīng)用功能在當(dāng)前設(shè)備上不可用,請(qǐng)適當(dāng)降級(jí)相應(yīng)的應(yīng)用功能。例如,您可以通過調(diào)用hasSystemFeature()來查詢功能是否可用,如下所示:
Java
Kotlin
不同的設(shè)備可能會(huì)運(yùn)行不同版本的 Android 平臺(tái),例如 Android 4.0 或 Android 4.4。每個(gè)后續(xù)的平臺(tái)版本通常會(huì)添加之前版本中不可用的新 API。為表明可用的 API 集,每個(gè)平臺(tái)版本都會(huì)指定API 級(jí)別。例如,Android 1.0 是 API 級(jí)別 1,而 Android 4.4 是 API 級(jí)別 19。
通過 API 級(jí)別,您可以使用uses-sdk清單標(biāo)記及其minSdkVersion屬性來聲明應(yīng)用兼容的最低版本。例如,Android 4.0(API 級(jí)別 14)中添加了 日歷提供程序 API。如果您的應(yīng)用在沒有這些 API 的情況下無法運(yùn)行,您應(yīng)將 API 級(jí)別 14 聲明為應(yīng)用的最低支持版本。
minSdkVersion屬性聲明應(yīng)用兼容的最低版本,targetSdkVersion屬性聲明應(yīng)用經(jīng)過優(yōu)化后適用的最高版本。
不過,請(qǐng)注意uses-sdk元素中的屬性會(huì)被替換為build.gradle文件中的相應(yīng)屬性。因此,如果您使用的是 Android Studio,則必須在其中指定minSdkVersion和targetSdkVersion值:
要詳細(xì)了解build.gradle文件,請(qǐng)參閱 如何配置編譯版本 。
每個(gè)后續(xù)版本的 Android 都為使用之前平臺(tái)版本的 API 構(gòu)建的應(yīng)用提供兼容性,因此您的應(yīng)用應(yīng)始終與未來版本的 Android 兼容,同時(shí)使用已記錄的 Android API。
注意 : targetSdkVersion 屬性不會(huì)阻止您的應(yīng)用安裝在高于指定值的平臺(tái)版本上,但它很重要,因?yàn)樗蛳到y(tǒng)指示您的應(yīng)用是否應(yīng)繼承較新版本中的行為更改。如果您不將 targetSdkVersion 更新到最新版本,則系統(tǒng)會(huì)認(rèn)為您的應(yīng)用在最新版本上運(yùn)行時(shí)需要一些向后兼容性行為。例如,在 Android 4.4 中的行為更改 中,使用 AlarmManager API 創(chuàng)建的鬧鐘現(xiàn)在默認(rèn)不精確,因此系統(tǒng)可以批量處理應(yīng)用鬧鐘并節(jié)省系統(tǒng)電量,但如果您的目標(biāo) API 級(jí)別低于“19”,則系統(tǒng)會(huì)為您的應(yīng)用保留之前的 API 行為。
不過,如果您的應(yīng)用使用的是較新平臺(tái)版本中添加的 API,但其主要功能并不需要這些 API,則應(yīng)在運(yùn)行時(shí)檢查 API 級(jí)別,并在 API 級(jí)別過低時(shí)適當(dāng)降級(jí)相應(yīng)的功能。在這種情況下,請(qǐng)將 minSdkVersion 盡量設(shè)置為適用于應(yīng)用主要功能的最低值,然后將當(dāng)前系統(tǒng)的版本 SDK_INT 與 Build.VERSION_CODES 中對(duì)應(yīng)于您要檢查的 API 級(jí)別的一個(gè)代號(hào)常量進(jìn)行比較。例如:
Android 可在各種尺寸的設(shè)備上運(yùn)行,包括手機(jī)、平板電腦和電視。為了按照屏幕類型對(duì)設(shè)備進(jìn)行分類,Android 為每種設(shè)備定義了兩個(gè)特征:屏幕尺寸(屏幕的物理尺寸)和屏幕密度(屏幕上像素的物理密度,稱為 DPI)。為了簡化不同的配置,Android 將這些變體歸納成組,使它們更容易作為定位目標(biāo):
四種廣義的尺寸:小、標(biāo)準(zhǔn)、大和特大。
還有幾種廣義的密度:mdpi(中)、hdpi(高)、xhdpi(超高)、xxhdpi(超超高)等。
默認(rèn)情況下,您的應(yīng)用會(huì)兼容所有屏幕尺寸和密度,因?yàn)橄到y(tǒng)會(huì)根據(jù)需要對(duì)各個(gè)屏幕的界面布局和圖片資源進(jìn)行相應(yīng)的調(diào)整。不過,您應(yīng)針對(duì)不同的屏幕尺寸添加專門的布局,針對(duì)常見的屏幕密度添加優(yōu)化的位圖圖片,以優(yōu)化每種屏幕配置的用戶體驗(yàn)。
分辨率對(duì)應(yīng)DPI
ldpi? QVGA (240×320)
mdpi? HVGA (320×480)
hdpi? WVGA (480×800),FWVGA (480×854)
xhdpi? 720P(1280*720)
xxhdpi 1080p(1920*1080 )
xxxhdpi 4K(3840×2160)
機(jī)型適配方面常規(guī)處理方法:
1、開發(fā)之前UI給出不同尺寸標(biāo)準(zhǔn)的多套素材,一般情況下給出:hdpi、xhdpi、xxxhdpi 三種尺寸類型的素材。
2、特殊類型圖片使用Android Studio內(nèi)置draw9path工具進(jìn)行制作,例如聊天界面中內(nèi)容背景圖片。
3、布局編寫時(shí)盡量使用 Linearlayout 與 ?RelativeLayout,LinearLayout內(nèi)部可以使用weight(權(quán)重)屬性將子控件的尺寸按比例進(jìn)行設(shè)置。RelativeLayout 內(nèi)部可以使用layout_align...(相對(duì)于xxx)屬性將子控件的尺寸相對(duì)于父控件或相對(duì)于其他子控件進(jìn)行設(shè)置。
4、設(shè)置尺寸的時(shí)候長度單位 ?布局使用 dp ?字符使用 ?sp。 其實(shí)字體大小的尺寸使用 ?dp 也可以,但是sp的情況下 用戶使用系統(tǒng)設(shè)置字體大小的時(shí)候可以改變控件中字體的大小,但是使用dp設(shè)置的字體就不會(huì)產(chǎn)生變化。
5、針對(duì)每一個(gè)屏幕的尺寸生成一套px與dp的轉(zhuǎn)換方案,詳情見博客: Android機(jī)型適配方案 。
6、google推出了一個(gè)百分比布局庫,可以使用百分比的方式進(jìn)行布局尺寸的設(shè)置,詳情見博客: Android百分比布局庫(percent-support-lib)解析與擴(kuò)展
7、利用自定義View的方式去解決,其實(shí)原理也是,在繪制View的時(shí)候,獲取屏幕的尺寸然后按照一定的比例去設(shè)置控件的尺寸
還有一些瑣碎知識(shí)點(diǎn)需要了解并記住:
1. px (pixels)像素 :
一個(gè)像素通常被視為圖像的最小的完整采樣,這個(gè)用的比較多,特別是web開發(fā),頁面基本都是使用像素作為單位的.
2.dp:
這個(gè)是最常用但也最難理解的尺寸單位。它與“像素密度”密切相關(guān),所以首先我們解釋一下什么是像素密度。假設(shè)有一部手機(jī),屏幕的物理尺寸為1.5英寸x2英寸,屏幕分辨率為240x320,則我們可以計(jì)算出在這部手機(jī)的屏幕上,每英寸包含的像素點(diǎn)的數(shù)量為240/1.5=160dpi(橫向)或320/2=160dpi(縱向),160dpi就是這部手機(jī)的像素密度,像素密度的單位dpi是Dots Per Inch的縮寫,即每英寸像素?cái)?shù)量。橫向和縱向的這個(gè)值都是相同的,原因是大部分手機(jī)屏幕使用正方形的像素點(diǎn)。
不同的手機(jī)/平板可能具有不同的像素密度,例如同為4寸手機(jī),有480x320分辨率的也有800x480分辨率的,前者的像素密度就比較低。Android系統(tǒng)定義了四種像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它們對(duì)應(yīng)的dp到px的系數(shù)分別為0.75、1、1.5和2,這個(gè)系數(shù)乘以dp長度就是像素?cái)?shù)。例如界面上有一個(gè)長度為“80dp”的圖片,那么它在240dpi的手機(jī)上實(shí)際顯示為80x1.5=120px,在320dpi的手機(jī)上實(shí)際顯示為80x2=160px。如果你拿這兩部手機(jī)放在一起對(duì)比,會(huì)發(fā)現(xiàn)這個(gè)圖片的物理尺寸“差不多”。
3.dip:
與dp完全相同,只是名字不同而已。在早期的Android版本里多使用dip,后來為了與sp統(tǒng)一就建議使用dp這個(gè)名字了。
4.sp:
與縮放無關(guān)的抽象像素(Scale-independent Pixel)。sp和dp很類似但唯一的區(qū)別是,Android系統(tǒng)允許用戶自定義文字尺寸大小(小、正常、大、超大等等),當(dāng)文字尺寸是“正常”時(shí)1sp=1dp=0.00625英寸,而當(dāng)文字尺寸是“大”或“超大”時(shí),1sp1dp=0.00625英寸。類似我們?cè)趙indows里調(diào)整字體尺寸以后的效果——窗口大小不變,只有文字大小改變。
還有一些詳細(xì)的情況需要了解,都在這個(gè)博客里: 點(diǎn)擊進(jìn)入
名稱欄目:android版本適配,android高版本兼容低版本
網(wǎng)站路徑:http://chinadenli.net/article1/dsgpgid.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站制作、電子商務(wù)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)