Android中主要資源文件及文件夾介紹
1:assets文件夾是存放不進(jìn)行編譯加工的原生文件,即該文件夾里面的文件不會(huì)像xml,java文件被預(yù)編譯,可以存放一些圖片,html,js, css等文件。
2:res文件夾里面的多個(gè)文件夾的各自介紹
res/anim/ XML文件,它們被編譯進(jìn)逐幀動(dòng)畫(huà)(frame by frame animation)或補(bǔ)間動(dòng)畫(huà)(tweened animation)對(duì)象 res/drawable/ .png、.9.png、.jpg文件,它們被編譯進(jìn)以下的Drawable資源子類型中, 要獲得這種類型的一個(gè)資源,可以使用Resource.getDrawable(id) ;為了獲取資源類型,使用mContext.getResources().getDrawable(R.drawable.imageId) 注意:放在這里的圖像資源可能會(huì)被aapt工具自動(dòng)地進(jìn)行無(wú)損壓縮優(yōu)化。比如,一個(gè)真彩色但并不需要256色的PNG可能會(huì)被轉(zhuǎn)換為一個(gè)帶調(diào)色板的8位PNG。這使得同等質(zhì)量的圖片占用更少的資源。所以我們得意識(shí)到這些放在該目錄下的二進(jìn)制圖像在生成時(shí)可能會(huì)發(fā)生變化。如果你想讀取一個(gè)圖像位流并轉(zhuǎn)換成一個(gè)位圖(bitmap),請(qǐng)把圖像文件放在res/raw/目錄下,這樣可以避免被自動(dòng)優(yōu)化。
res/layout/ 被編譯為屏幕布局(或屏幕的一部分)的XML文件
res/values/ 可以被編譯成很多種類型的資源的XML文件。注意: 不像其他的res/文件夾,它可以保存任意數(shù)量的文件,這些文件保存了要?jiǎng)?chuàng)建資源的描述,而不是資源本身。XML元素類型控制這些資源應(yīng)該放在R類的什么地方。 盡管這個(gè)文件夾里的文件可以任意命名,不過(guò)下面使一些比較典型的文件(文件命名的慣例是將元素類型包含在該名稱之中):
array.xml 定義數(shù)組
colors.xml 定義color drawable和顏色的字符串值(color string values)
使用Resource.getDrawable()和Resources.getColor()分別獲得這些資源。
dimens.xml定義尺寸值(dimension value)。
使用Resources.getDimension()獲得這些資源。
strings.xml定義字符串(string)值
使用Resources.getString()或者Resources.getText()獲取這些資源。
styles.xml 定義樣式(style)對(duì)象
res/xml/ 任意的XML文件,在運(yùn)行時(shí)可以通過(guò)調(diào)用Resources.getXML()讀取。
res/raw/ 直接復(fù)制到設(shè)備中的任意文件。它們無(wú)需編譯,添加到你的應(yīng)用程序編譯產(chǎn)生的壓縮文件中。要使用這些資源,可以調(diào)用Resources.openRawResource(),參數(shù)是資源的ID,即R.raw.somefilename。
自動(dòng)生成的R class 在項(xiàng)目文件夾的gen文件夾里面有個(gè)R.java,我們平常引用的資源主要引用這個(gè)類的變量。 注意:R類是自動(dòng)生成的,并且它不能被手動(dòng)修改。當(dāng)資源發(fā)生變動(dòng)時(shí),它會(huì)自動(dòng)修改。
在代碼中使用資源下面是一個(gè)引用資源的語(yǔ)法:R.resource_type.resource_name 或者 android.R.resource_type.resource_name 其中resource_type是R的子類,保存資源的一個(gè)特定類型。resource_name是在XML文件定義的資源的name屬性,或者有其他文件類型為資源定義的文件名(不包含擴(kuò)展名,這指的是drawable文件夾里面的icon.png類似的文件,name=icon)。Android包含了很多標(biāo)準(zhǔn)資源,如屏幕樣式和按鈕背景。要在代碼中引用這些資源,你必須使用android進(jìn)行限定,如android.R.drawable.button_background。
xml文件內(nèi)引用資源
1) 引用自定義的資源
android:text="@string/hello" 這里使用"@"前綴引入對(duì)一個(gè)資源的引用--在@[package:]type/name形式中后面的文本是資源的名稱。在這種情況下,我們不需要指定包 名,因?yàn)槲覀円玫氖俏覀冏约喊械馁Y源。type是xml子節(jié)點(diǎn)名,name是xml屬性名:Hello World, HelloDemo!
2) 引用系統(tǒng)資源 android:textColor="@android :color/opaque_red" 指定package: android
3) 引用主題屬性 另外一種資源值允許你引用當(dāng)前主題中的屬性的值。這個(gè)屬性值只能在樣式資源和XML屬性中使用;它允許你通過(guò)將它們改變?yōu)楫?dāng)前主題提供的標(biāo)準(zhǔn)變化來(lái)改變UI元素的外觀,而不是提供具體的值。 android:textColor="?android:textDisabledColor" 注意,這和資源引用非常類似,除了我們使用一個(gè)"?"前綴代替了"@"。當(dāng)你使用這個(gè)標(biāo)記時(shí),你就提供了屬性資源的名稱,它將會(huì)在主題中被查找--因?yàn)橘Y 源工具知道需要的屬性資源,所以你不需要顯示聲明這個(gè)類型(如果聲明,其形式就 是?android:attr/android:textDisabledColor)。除了使用這個(gè)資源的標(biāo)識(shí)符來(lái)查詢主題中的值代替原始的資源,其命 名語(yǔ)法和"@"形式一致:?[namespace:]type/name,這里類型可選。
Color Value語(yǔ)法: #color_value 可以保存在res/values/colors.xml (文件名可以任意)。
xml引用:android:textColor="@color/color_name"
Java引用: int color = Resources.getColor(R.color.color_name)
其中#color_value有以下格式(A代表Alpha通道): #RGB #ARGB #RRGGBB #AARRGGBB xml示例(聲明兩個(gè)顏色,第一個(gè)不透明,第二個(gè)透明色):#f00 #80ff0000
Color Drawables語(yǔ)法: color_value 可以保存在res/values/colors.xml。
xml引用:android:background="@drawable/color_name"
java引用:Drawable redDrawable = Resources.getDrawable(R.drawable.color_name) color_name和上面的一樣。
圖片 一般放在res/drawable/里面 官方提示png (preferred), jpg (acceptable), gif (discouraged),看來(lái)一般使用png格式比較好!
xml引用 @[package:]drawable/some_file
java引用 R.drawable.some_file 引用是不帶擴(kuò)展名
dimension語(yǔ)法: dimen_value單位 一般保存為res/values/dimen.xml。
度量單位:
px(象素): 屏幕實(shí)際的象素,常說(shuō)的分辨率1024*768pixels,就是橫向1024px, 縱向768px,不同設(shè)備顯示效果相同。in(英 寸): 屏幕的物理尺寸, 每英寸等于2.54厘米。 mm(毫米): 屏幕的物理尺寸。 pt(點(diǎn)) : 屏幕的物理尺寸。1/72英寸。 dp/dip : 與密度無(wú)關(guān)的象素,一種基于屏幕密度的抽象單位。在每英寸160點(diǎn)的顯示器上,1dp = 1px。但dp和px的比例會(huì)隨著屏幕密度的變化而改變,不同設(shè)備有不同的顯示效果。 sp : 與刻度無(wú)關(guān)的象素,主要用于字體顯示best for textsize,作為和文字相關(guān)大小單位。
XML: android:textSize="@dimen/some_name"
Java: float dimen = Resources.getDimen(R.dimen.some_name)
assets 文件夾資源的訪問(wèn) assets文件夾里面的文件都是保持原始的文件格式,需要用AssetManager以字節(jié)流的形式讀取文件。
1. 先在Activity里面調(diào)用getAssets()來(lái)獲取AssetManager引用。
2. 再用AssetManager的open(String fileName, int accessMode)方法則指定讀取的文件以及訪問(wèn)模式就能得到輸入流InputStream。
3. 然后就是用已經(jīng)open file 的inputStream讀取文件,讀取完成后記得inputStream.close()。
4.調(diào)用AssetManager.close()關(guān)閉AssetManager。
相關(guān)文章
Android基于ImageSwitcher實(shí)現(xiàn)圖片切換功能
這篇文章主要介紹了Android基于ImageSwitcher實(shí)現(xiàn)圖片切換功能的相關(guān)資料,需要的朋友可以參考下2016-02-02Android Studio 配置:自定義頭部代碼注釋及添加模版方式
這篇文章主要介紹了Android Studio 配置:自定義頭部代碼注釋及添加模版方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫(xiě)多個(gè)接口中相同方法沖突的問(wèn)題
這篇文章主要介紹了解決Kotlin 類在實(shí)現(xiàn)多個(gè)接口,覆寫(xiě)多個(gè)接口中相同方法沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03Android 代碼寫(xiě)控件代替XML簡(jiǎn)單實(shí)例
這篇文章主要介紹了Android 代碼寫(xiě)控件代替XML簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05Android自定義view漸變圓形動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了Android自定義view漸變圓形動(dòng)畫(huà),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03Android操作SQLite數(shù)據(jù)庫(kù)(增、刪、改、查、分頁(yè)等)及ListView顯示數(shù)據(jù)的方法詳解
這篇文章主要介紹了Android操作SQLite數(shù)據(jù)庫(kù)(增、刪、改、查、分頁(yè)等)及ListView顯示數(shù)據(jù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android操作SQLite數(shù)據(jù)庫(kù)及使用ListView顯示數(shù)據(jù)的相關(guān)技巧,需要的朋友可以參考下2016-02-02Android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果
這篇文章主要介紹了android 仿摩拜單車共享單車進(jìn)度條實(shí)現(xiàn)StepView效果的實(shí)例,通過(guò)定義五個(gè)狀態(tài),分別為:為完成、正在進(jìn)行、已完成、終點(diǎn)完成、終點(diǎn)未完成。具體實(shí)現(xiàn)代碼,大家參考下2017-03-03Android編程實(shí)現(xiàn)圖片背景漸變切換與圖層疊加效果
這篇文章主要介紹了Android編程實(shí)現(xiàn)圖片背景漸變切換與圖層疊加效果,涉及Android圖形特效的相關(guān)操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2017-01-01Android進(jìn)階之從IO到NIO的模型機(jī)制演進(jìn)
這篇文章主要為大家介紹了Android進(jìn)階之從IO到NIO的模型機(jī)制演進(jìn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01