1. res下的資源類型
創(chuàng)新互聯(lián)公司成立以來不斷整合自身及行業(yè)資源、不斷突破觀念以使企業(yè)策略得到完善和成熟,建立了一套“以技術(shù)為基點,以客戶需求中心、市場為導向”的快速反應(yīng)體系。對公司的主營項目,如中高端企業(yè)網(wǎng)站企劃 / 設(shè)計、行業(yè) / 企業(yè)門戶設(shè)計推廣、行業(yè)門戶平臺運營、手機APP定制開發(fā)、手機網(wǎng)站制作、微信網(wǎng)站制作、軟件開發(fā)、德陽機房服務(wù)器托管等實行標準化操作,讓客戶可以直觀的預(yù)知到從創(chuàng)新互聯(lián)公司可以獲得的服務(wù)效果。目錄 | 資源類型 |
---|---|
animator/ | 用于定義屬性動畫的 XML 文件。 |
anim/ | 用于定義漸變動畫的 XML 文件。(屬性動畫也可保存在此目錄中,但為了區(qū)分這兩種類型,屬性動畫選 animator/ 目錄。) |
color/ | 用于定義顏色狀態(tài)列表的 XML 文件。請參閱顏色狀態(tài)列表資源 |
drawable/ | 位圖文件(
請參閱 Drawable 資源。 |
mipmap/ | 適用于不同啟動器圖標密度的可繪制對象文件。如需了解有關(guān)使用 mipmap/ 文件夾管理啟動器圖標的詳細信息,請參閱管理項目概覽。 |
layout/ | 用于定義用戶界面布局的 XML 文件。請參閱布局資源。 |
menu/ | 用于定義應(yīng)用菜單(如選項菜單、上下文菜單或子菜單)的 XML 文件。請參閱菜單資源。 |
raw/ | 需以原始形式保存的任意文件。如要使用原始 但是,如需訪問原始文件名和文件層次結(jié)構(gòu),則可以考慮將某些資源保存在 |
values/ | 包含字符串、整型數(shù)和顏色等簡單值的 XML 文件。 其他 由于每個資源均使用自己的 XML 元素進行定義,因此您可以隨意命名文件,并在某個文件中放入不同的資源類型。但是,您可能需要將獨特的資源類型放在不同的文件中,使其一目了然。例如,對于可在此目錄中創(chuàng)建的資源,下面給出了相應(yīng)的文件名約定:
請參閱字符串資源、樣式資源和更多資源類型。 |
xml/ | 可在運行時通過調(diào)用 Resources.getXML() 讀取的任意 XML 文件。各種 XML 配置文件(如可搜索配置)都必須保存在此處。 |
font/ | 帶有擴展名的字體文件(如 .ttf 、.otf 或 .ttc ),或包含 <font-family> 元素的 XML 文件。如需詳細了解作為資源的字體,請參閱 XML 中的字體。 |
注意:切勿將資源文件直接保存在 res/
目錄內(nèi),因為這樣會造成編譯錯誤。
2.限定符
命名規(guī)則 - <resources_name>-<config_qualifier>
配置 | 限定符值 | 描述 |
---|---|---|
MCC 和 MNC | 示例:mcc310 mcc310-mnc004 mcc208-mnc00 等等 | 移動設(shè)備國家代碼 (MCC),(可選)后跟設(shè)備 SIM 卡中的移動設(shè)備網(wǎng)絡(luò)代碼 (MNC)。例如, 如果設(shè)備使用無線裝置連接(GSM 手機),則 MCC 和 MNC 值均來自 SIM 卡。 您也可以單獨使用 MCC(例如,將國家/地區(qū)特定的合法資源加入應(yīng)用)。如果只需根據(jù)語言指定,則改用語言和地區(qū)限定符(稍后進行介紹)。如果決定使用 MCC 和 MNC 限定符,請謹慎執(zhí)行此操作并測試限定符是否按預(yù)期工作。 另請參閱配置字段 |
語言和區(qū)域 | 示例:en fr en-rUS fr-rFR fr-rCA b+en b+en+US b+es+419 | 語言通過由兩個字母組成的 ISO 639-1 語言代碼進行定義,可以選擇后跟兩個字母組成的 ISO 3166-1-alpha-2 區(qū)域碼(前綴用小寫字母 這些代碼不區(qū)分大小寫; Android 7.0(API 級別 24)引入對 BCP 47 語言標記的支持,可供您用來限定特定語言和區(qū)域的資源。語言標記由一個或多個子標記序列組成,每個子標記都能優(yōu)化或縮小由整體標記標識的語言范圍。如需了解有關(guān)語言標記的詳細信息,請參閱用于標識語言的標記。 如要使用 BCP 47 語言標記,請將 如果用戶在系統(tǒng)設(shè)置中更改語言,則語言標記可能會在應(yīng)用的生命周期中發(fā)生變更。如需了解運行時應(yīng)用會因此受到何種影響,請參閱處理運行時變更。 有關(guān)針對其他語言本地化應(yīng)用的完整指南,請參閱本地化。 另請參閱 |
布局方向 | ldrtl ldltr | 應(yīng)用的布局方向。 此配置適用于布局、可繪制資源或值等任何資源。 例如,若要針對阿拉伯語提供某種特定布局,并針對任何其他“從右到左”的語言(如波斯語或希伯來語)提供某種通用布局,則可提供以下資源: res/ layout/ main.xml (Default layout) layout-ar/ main.xml (Specific layout for Arabic) layout-ldrtl/ main.xml (Any "right-to-left" language, except for Arabic, because the "ar" language qualifier has a higher precedence.)請注意:如要為應(yīng)用啟用從右到左的布局功能,則必須將 此項為 API 級別 17 中的新增配置。 |
smallestWidth | sw<N>dp 示例: sw320dp sw600dp sw720dp 等等 | 屏幕的基本尺寸,由可用屏幕區(qū)域的最小尺寸指定。具體而言,設(shè)備的 smallestWidth 是屏幕可用高度和寬度的最小尺寸(您也可將其視為屏幕的“最小可能寬度”)。無論屏幕的當前方向如何,您均可使用此限定符確保應(yīng)用界面的可用寬度至少為 例如,如果布局要求屏幕區(qū)域的最小尺寸始終至少為 600dp,則可使用此限定符創(chuàng)建布局資源 使用最小寬度確定一般屏幕尺寸非常有用,因為寬度通常是設(shè)計布局時的驅(qū)動因素。界面經(jīng)常會垂直滾動,但對其水平方向所需要的最小空間具有非常硬性的限制??捎脤挾纫彩谴_定是否對手持式設(shè)備使用單窗格布局,或?qū)ζ桨咫娔X使用多窗格布局的關(guān)鍵因素。因此,您可能最關(guān)注每臺設(shè)備上的最小可能寬度。 設(shè)備的最小寬度會將屏幕裝飾元素和系統(tǒng)界面考慮在內(nèi)。例如,如果設(shè)備屏幕上的某些永久性界面元素沿著最小寬度軸占據(jù)空間,則系統(tǒng)會聲明最小寬度小于實際屏幕尺寸,因為這些屏幕像素不適用于您的界面。 以下是一些可用于常見屏幕尺寸的值:
當應(yīng)用為多個資源目錄提供不同的 smallestWidth 限定符值時,系統(tǒng)會使用最接近(但未超出)設(shè)備 smallestWidth 的值。 此項為 API 級別 13 中的新增配置。 另請參閱 如需了解有關(guān)不同屏幕設(shè)計和使用此限定符的詳細信息,請參閱支持多種屏幕開發(fā)者指南。 |
可用寬度 | w<N>dp 示例: w720dp w1024dp 等等 | 指定資源應(yīng)使用的最小可用屏幕寬度(以 此功能往往有助于確定是否使用多窗格布局,因為即便在使用平板電腦設(shè)備時,您通常也不希望豎屏以橫屏的方式使用多窗格布局。因此,您可以使用此功能指定布局所需的最小寬度,而無需同時使用屏幕尺寸和屏幕方向限定符。 應(yīng)用為此配置提供具有不同值的多個資源目錄時,系統(tǒng)會使用最接近(但未超出)設(shè)備當前屏幕寬度的值。此處的值會考慮屏幕裝飾元素,因此如果設(shè)備顯示屏的左邊緣或右邊緣上有一些永久性 UI 元素,考慮到這些 UI 元素,同時為減少應(yīng)用的可用空間,設(shè)備會使用小于實際屏幕尺寸的寬度值。 此項為 API 級別 13 中的新增配置。 另請參閱 如需了解有關(guān)不同屏幕設(shè)計和使用此限定符的詳細信息,請參閱支持多種屏幕開發(fā)者指南。 |
可用高度 | h<N>dp 示例: h720dp h1024dp 等等 | 指定資源應(yīng)使用的最小可用屏幕高度(以“dp”為單位,由 對比使用此方式定義布局所需高度與使用 當應(yīng)用為此配置提供具有不同值的多個資源目錄時,系統(tǒng)會使用最接近(但未超出)設(shè)備當前屏幕高度的值。此處的值會考慮屏幕裝飾元素,因此如果設(shè)備顯示屏的上邊緣或下邊緣上有一些永久性 UI 元素,考慮到這些 UI 元素,同時為減少應(yīng)用的可用空間,設(shè)備會使用小于實際屏幕尺寸的高度值。非固定的屏幕裝飾元素(例如,全屏時可隱藏的手機狀態(tài)欄)并不在考慮范圍內(nèi),標題欄或操作欄等窗口裝飾亦如此,因此應(yīng)用必須準備好處理稍小于其指定值的空間。 此項為 API 級別 13 中的新增配置。 另請參閱 如需了解有關(guān)不同屏幕設(shè)計和使用此限定符的詳細信息,請參閱支持多種屏幕開發(fā)者指南。 |
屏幕尺寸 | small normal large xlarge |
請注意:使用尺寸限定符并不表示資源僅適用于該尺寸的屏幕。如果沒有為備用資源提供最符合當前設(shè)備配置的限定符,則系統(tǒng)可能會使用其中最匹配的資源。 注意:如果所有資源均使用大于當前屏幕的尺寸限定符,則系統(tǒng)不會使用這些資源,并且應(yīng)用將在運行時崩潰(例如,如果所有布局資源均以 此項為 API 級別 4 中的新增配置。 如需了解詳細信息,請參閱支持多種屏幕。 另請參閱 |
屏幕縱橫比 | long notlong |
此項為 API 級別 4 中新增配置。 此配置完全基于屏幕的縱橫比(寬屏較寬),并且與屏幕方向無關(guān)。 另請參閱 |
圓形屏幕 | round notround |
此項為 API 級別 23 中的新增配置。 另請參閱 |
廣色域 | widecg nowidecg |
此項為 API 級別 26 中的新增配置。 另請參閱 |
高動態(tài)范圍 (HDR) | highdr lowdr |
此項為 API 級別 26 中的新增配置。 另請參閱 |
屏幕方向 | port land |
如果用戶旋轉(zhuǎn)屏幕,此配置可能會在應(yīng)用生命周期中發(fā)生變化。如需了解這會在運行時期間給應(yīng)用帶來哪些影響,請參閱處理運行時變更。 另請參閱 |
界面模式 | car desk television appliance watch vrheadset |
此項為 API 級別 8 中的新增配置,API 13 中的新增電視配置,API 20 中的新增手表配置。 如需了解應(yīng)用在設(shè)備插入基座或從中移除時的響應(yīng)方式,請閱讀確定并監(jiān)控插接狀態(tài)和類型。 如果用戶將設(shè)備插入基座,此配置可能會在應(yīng)用生命周期中發(fā)生變化。您可以使用 |
夜間模式 | night notnight |
此項為 API 級別 8 中的新增配置。 如果夜間模式停留在自動模式(默認),此配置可能會在應(yīng)用生命周期中發(fā)生變化。在此情況下,該模式會根據(jù)當天的時間進行調(diào)整。您可以使用 |
屏幕像素密度 (dpi) | ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi nnndpi |
六個基本密度之間的縮放比為 3:4:6:8:12:16(忽略 tvdpi 密度)。因此,9x9 (ldpi) 位圖相當于 12x12 (mdpi)、18x18 (hdpi)、24x24 (xhdpi) 位圖,依此類推。 如果您認為圖像資源在電視或其他某些設(shè)備上的呈現(xiàn)效果不夠好,進而想嘗試使用 tvdpi 資源,則縮放系數(shù)應(yīng)為 1.33*mdpi。例如,mdpi 屏幕的 100px x 100px 圖像應(yīng)相當于 tvdpi 屏幕的 133px x 133px 圖像。 請注意:使用密度限定符并不表示資源僅適用于該密度的屏幕。如果沒有為備用資源提供最符合當前設(shè)備配置的限定符,則系統(tǒng)可能使用其中最匹配的資源。 如需詳細了解如何處理不同屏幕密度以及 Android 如何縮放位圖以適應(yīng)當前密度,請參閱支持多種屏幕。 |
觸摸屏類型 | notouch finger |
另請參閱 |
鍵盤可用性 | keysexposed keyshidden keyssoft |
如果您提供了 如果用戶打開硬鍵盤,此配置可能會在應(yīng)用生命周期中發(fā)生變化。如需了解這會在運行時期間給應(yīng)用帶來哪些影響,請參閱處理運行時變更。 另請參閱配置字段 |
主要的文本輸入法 | nokeys qwerty 12key |
另請參閱 |
導航鍵可用性 | navexposed navhidden |
如果用戶顯示導航鍵,此配置可能會在應(yīng)用生命周期中發(fā)生變化。如需了解這會在運行時期間給應(yīng)用帶來哪些影響,請參閱處理運行時變更。 另請參閱 |
主要的非觸摸導航方法 | nonav dpad trackball wheel |
另請參閱 |
平臺版本(API 級別) | 示例:v3 v4 v7 等等 | 設(shè)備支持的 API 級別。例如, |
請注意:自 Android 1.0 起便已添加部分配置限定符,因此并非所有版本的 Android 系統(tǒng)都支持所有限定符。使用新限定符會隱式添加平臺版本限定符,因此較舊版本系統(tǒng)的設(shè)備必然會忽略它。例如,使用 w600dp
限定符會自動包括 v13
限定符,因為可用寬度限定符是 API 級別 13 中的新增配置。為避免出現(xiàn)任何問題,請始終包含一組默認資源(一組不帶限定符的資源)。如需了解詳細信息,請參閱利用資源提供最佳設(shè)備兼容性部分。
3.匹配查找的邏輯
3. 橫豎屏切換時,在新版中更希望用戶使用ViewModel來進行處理
4.本地化,獲取當前的語言環(huán)境
通過 context對象獲取
java 代碼: Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName(); kotlin 代碼: val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName4.1 使用pseudolocale測試本地化的界面是否需要優(yōu)化
開啟開發(fā)者模式后,在build.gradle中添加
android { ... buildTypes { debug { pseudoLocalesEnabled true } }5. Unicode 和國際化支持
對于Android 7.0版本 ICU支持的更好可以直接調(diào)用方法,而對于之前的版本則需要打包進apk中
在Android 7.0版本中使用 android.icu 供開發(fā)使用
對于早先使用 com.ibm.icu 最好盡快更換為 android.icu
對于需要遷移的包有以下這些: Android 和 Java ICU4J 類 對應(yīng)關(guān)系
類 | 替代選項 |
---|---|
java.lang.Character | android.icu.lang.UCharacter |
java.text.BreakIterator | android.icu.text.BreakIterator |
java.text.DecimalFormat | android.icu.text.DecimalFormat |
java.util.Calendar | android.icu.util.Calendar |
android.text.BidiFormatter | android.icu.text.Bidi |
android.text.format.DateFormat | android.icu.text.DateFormat |
android.text.format.DateUtils | android.icu.text.DateFormat android.icu.text.RelativeDateTimeFormatter |
Android上的 ICU 不遵循用戶的24小時/12小時時間格式設(shè)置,需要單獨進行設(shè)置
java 代碼: String skeleton = DateFormat.is24HourFormat(context) ? "Hm" : "hm"; String formattedTime = android.icu.text.DateFormat.getInstanceForSkeleton(skeleton, Locale.getDefault()).format(new Date()); kotlin 代碼: val skeleton: String = if (DateFormat.is24HourFormat(context)) "Hm" else "hm" val formattedTime: String = android.icu.text.DateFormat.getInstanceForSkeleton( skeleton, Locale.getDefault()).format(Date() )6. 音譯器
Android 10(API 級別 29)及更高版本提供 Transliterator
,用于將文字從一種格式音譯為另一種格式。在不同的 Android 版本和設(shè)備上,可用的音譯 ID 組不穩(wěn)定。設(shè)備制造商可能會添加額外的音譯 ID。開發(fā)者必須先檢查可用的 ID(從 Transliterator.getAvailableIDs()
獲得),然后在對文字進行音譯。
7. 本地語言設(shè)置策略
例如,假設(shè)您遇到了以下情況:
en_US
(US English),但它也在 es_ES
資源文件中對西班牙字符串進行了本地化。es_MX
當您的 Java 代碼引用字符串時,系統(tǒng)會從默認 (en_US
) 資源文件加載字符串,即使應(yīng)用在 es_ES
下有本地化的西班牙語資源。這是因為當系統(tǒng)無法找到精確匹配時,它會繼續(xù)通過將國家/地區(qū)代碼從語言區(qū)域中剝離來查找資源。最后,如果未找到匹配,系統(tǒng)會恢復為默認模式,即 en_US
。
如果用戶選擇應(yīng)用根本不支持的語言(如法語),則系統(tǒng)也會默認顯示 en_US
。例如:
表 1. 沒有精確語言區(qū)域匹配項的資源解析。
用戶設(shè)置 | 應(yīng)用資源 | 資源解析 |
---|---|---|
fr_CH | 默認值 (en) de_DE es_ES fr_FR it_IT | 嘗試 fr_CH => 失敗 嘗試 fr => 失敗 使用默認值 (en) |
在此示例中,系統(tǒng)在不知道用戶是否理解英語的情況下顯示英語字符串。目前,此行為很常見
在Android 7.0 后的方法:
1. 之前將西班牙語資源存儲在 values-es-rUS
目錄中,請將其移至包含拉丁美洲西班牙語的 values-b+es+419
目錄中。同樣,如果您在名為 values-en-rGB
的目錄中存儲有資源字符串,請將此目錄重命名為 values-b+en+001
(國際英語),因為 en-GB
字符串的最常用母語為 en-001
2. 在API 級別 24 開始,Android 顯示的 LocaleList.getDefault()
API 可讓應(yīng)用直接查詢用戶已指定的語言列表。您可以使用此 API 創(chuàng)建更成熟的應(yīng)用行為和更優(yōu)化的內(nèi)容顯示。例如,搜索可以基于用戶的設(shè)置以多種語言顯示結(jié)果。瀏覽器應(yīng)用可避免翻譯以用戶理解的語言顯示的頁面,鍵盤應(yīng)用可自動啟用所有適用的布局
8 動畫矢量
在之前可能需要3個 xml文件 例如
res/drawable/avd.xml
res/drawable/vectordrawable.xml
res/anim/rotation.xml
現(xiàn)在可以合成為一個xml文件
res/drawable/avd.xml
<?xml version="1.0" encoding="utf-8"?> <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:aapt="http://schemas.android.com/aapt" > <aapt:attr name="android:drawable" > <vector android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="rotationGroup" android:pivotX="300.0" android:pivotY="300.0" android:rotation="45.0" > <path android:fillColor="#000000" android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> </group> </vector> </aapt:attr> <target android:name="rotationGroup"> <aapt:attr name="android:animation" > <objectAnimator android:duration="6000" android:propertyName="rotation" android:valueFrom="0" android:valueTo="360" /> </aapt:attr> </target> </animated-vector>
本文名稱:Android復習(二)應(yīng)用資源-創(chuàng)新互聯(lián)
新聞來源:http://jinyejixie.com/article6/ggsog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、動態(tài)網(wǎng)站、虛擬主機、商城網(wǎng)站、ChatGPT、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容