真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

androidresources類(lèi),安卓resources

android 為什么api包含了 編譯卻找不到方法

Context:一個(gè)項(xiàng)目需要重寫(xiě)AndroidResource類(lèi)getDrawable方法,在系統(tǒng)調(diào)用Resource.getDrawable時(shí)進(jìn)行攔截,分兩種情況:A情況仍舊走正常的調(diào)用;B情況則寫(xiě)定制的邏輯。第一次嘗試:新建一個(gè)Resource的子類(lèi),并重寫(xiě)getDrawable方法。1.正常調(diào)用是super.getDrawable2.非正常時(shí)寫(xiě)自己的邏輯??砂l(fā)現(xiàn)在5.0上報(bào)錯(cuò),5.0以下就沒(méi)問(wèn)題。第二次嘗試上官網(wǎng)查了下,發(fā)現(xiàn)原來(lái)Google在Android5.0上,新增了一個(gè)getDrawable(intid,Resources.Themetheme),系統(tǒng)不會(huì)再調(diào)用getDrawable(intid)方法,那當(dāng)然也就攔截不到了,B情況的定制邏輯也就失效了。把SDK的target調(diào)到5.0,重寫(xiě)getDrawable(intid,Resources.Themetheme),當(dāng)然就ok了。可問(wèn)題是我要在SDK4.+的情況下開(kāi)發(fā),那怎么??jī)煞N做法:在子類(lèi)新建getDrawable(intid,Resources.Themetheme)進(jìn)行重寫(xiě),但是我還需要調(diào)用super.getDrawable(intid,Themetheme)方法。在4.+的SDK環(huán)境下super即Resource是沒(méi)有這個(gè)法的,那就沒(méi)法實(shí)現(xiàn)A情況。這可怎么。用1.反射調(diào)用這個(gè)方法2.在方法名上加注釋@TargetApi{22}可問(wèn)題是反射、注解都沒(méi)法實(shí)現(xiàn)super.getDrawable這個(gè)調(diào)用的。第三次嘗試1.在項(xiàng)目中新建一個(gè)android.content.res包結(jié)構(gòu),并建立Resouce類(lèi)。2.將Resource的源碼復(fù)制到該類(lèi)中,但是因?yàn)橄到y(tǒng)隱藏API等,可能會(huì)報(bào)錯(cuò)。3.把所有方法的方法體內(nèi)容都刪除,返回值是對(duì)象的就returnnull,是基礎(chǔ)類(lèi)型的就隨便return基礎(chǔ)類(lèi)型,void就return。(因?yàn)镾DK中的API是不會(huì)打包到APK中的,只是保持了API的引用,安裝到手機(jī)上,會(huì)自動(dòng)調(diào)用ROM中的相關(guān)方法,所以這個(gè)復(fù)制的類(lèi)只是為了讓項(xiàng)目編譯通過(guò)而已)。4.給該類(lèi)加上getDrawable(intid,Resources.Themetheme),這樣我們子類(lèi)重寫(xiě)Resource方法時(shí),就可以調(diào)用super.getDrawable(intid,Resources.Themetheme).。第四次嘗試大功告成,但發(fā)現(xiàn)程序Runas時(shí)沒(méi)問(wèn)題,但是打包就有問(wèn)題了。原因是打包會(huì)調(diào)用混淆功能,Resource因被我們復(fù)制的類(lèi)替換了SDK中的類(lèi)??墒菍?dǎo)出APK時(shí)不包含這個(gè)Resource類(lèi)的,找不到引用就報(bào)錯(cuò)了??蓪?shí)際上只要安裝到手機(jī)上,就會(huì)調(diào)用系統(tǒng)ROM中的Resource類(lèi),所以不會(huì)產(chǎn)生實(shí)際的影響。也就是這個(gè)提示是沒(méi)必要的,那怎么做呢?在混淆的配置文件proguard-project.txt中加入-dontwarnandroid.content.res.**好了這才是大功告成了。

目前成都創(chuàng)新互聯(lián)已為成百上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、海西網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶(hù)導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶(hù)和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

android resource中s,c,d等等怎么用

在Android項(xiàng)目文件夾里面,主要的資源文件是放在res文件夾里面的。assets文件夾是存放不進(jìn)行編譯加工的原生文件,即該文件夾里面的文件不會(huì)像xml,java文件被預(yù)編譯,可以存放一些圖片,html,js, css等文件。在后面會(huì)介紹如何讀取assets文件夾的資源!

res文件夾里面的多個(gè)文件夾的各自介紹(來(lái)自網(wǎng)上的Android開(kāi)發(fā)指南中文版內(nèi)容):

2.自動(dòng)生成的R class

在項(xiàng)目文件夾的gen文件夾里面有個(gè)R.java,我們平常引用的資源主要引用這個(gè)類(lèi)的變量。

注意:R類(lèi)是自動(dòng)生成的,并且它不能被手動(dòng)修改。當(dāng)資源發(fā)生變動(dòng)時(shí),它會(huì)自動(dòng)修改。

3.?在代碼中使用資源

下面是一個(gè)引用資源的語(yǔ)法:

R.resource_type.resource_name??或者?android.R.resource_type.resource_name

其中resource_type是R的子類(lèi),保存資源的一個(gè)特定類(lèi)型。resource_name是在XML文件定義的資源的name屬性,或者有其他文件類(lèi)型為資源定義的文件名(不包含擴(kuò)展名,這指的是drawable文件夾里面的icon.png類(lèi)似的文件,name=icon)。?Android包含了很多標(biāo)準(zhǔn)資源,如屏幕樣式和按鈕背景。要在代碼中引用這些資源,你必須使用android進(jìn)行限定,如android.R.drawable.button_background。

Android中的Resources是什么類(lèi)?

是Android系統(tǒng)類(lèi),如下圖,通過(guò)getResources().getDrawable(R.drawable.cancel)可以加載圖片資源

初學(xué)android,Resources r = getResources();

1 既然是find "View" ById那么就是找到對(duì)應(yīng)ID的View,View范圍很大,系統(tǒng)不知道是哪個(gè)類(lèi)型,所以要轉(zhuǎn)換一下,這個(gè)View類(lèi)似于java的Object。

2 getResources是Activity的一個(gè)方法,既然你這個(gè)類(lèi)繼承了Activity,那么自然有他的方法,直接寫(xiě)方法名就可以調(diào)用了,這是個(gè)方法不是抽象類(lèi)。

3 getDrawable返回的是一個(gè)Drawable 對(duì)象,這個(gè)對(duì)象類(lèi)似于畫(huà)布一樣是一個(gè)可畫(huà)的對(duì)象,可以把現(xiàn)有的資源或者轉(zhuǎn)換的資源顯示給我們,可以把它放在諸如圖片控件上面做顯示。

android中怎么獲得得到resources對(duì)象

在Android中,想要獲取系統(tǒng)信息,可以調(diào)用其提供的方法System.getProperty(propertyStr),而系統(tǒng)信息諸如用戶(hù)根目錄(user.home)等都可以通過(guò)這個(gè)方法獲取,實(shí)現(xiàn)代碼如下:Java代碼: public static StringBuffer buffer = null; private static String initProperty(String description,String propertyStr) { if (buffer == null) { buffer = new StringBuffer(); } buffer.append(description).append(":"); buffer.append (System.getProperty(propertyStr)).append(" "); return buffer.toString(); } private static String getSystemProperty() { buffer = new StringBuffer(); initProperty("java.vendor.url","java.vendor.url"); initProperty("java.class.path","java.class.path"); return buffer.toString(); }上述代碼主要是通過(guò)調(diào)用系統(tǒng)提供的System.getProperty方法獲取指定的系統(tǒng)信息,并合并成字符串返回。1.2.2.3 運(yùn)營(yíng)商信息運(yùn)營(yíng)商信息中包含IMEI、手機(jī)號(hào)碼等,在Android中提供了運(yùn)營(yíng)商管理類(lèi)(TelephonyManager),可以通過(guò)TelephonyManager來(lái)獲取運(yùn)營(yíng)商相關(guān)的信息,實(shí)現(xiàn)的關(guān)鍵代碼如下:Java代碼: public static String fetch_tel_status(Context cx) { String result = null; TelephonyManager tm = (TelephonyManager) cx.getSystemService(Context.TELEPHONY_SERVICE); String str = " "; str += "DeviceId(IMEI) = " + tm.getDeviceId() + " "; str += "DeviceSoftwareVersion = " + tm.getDeviceSoftwareVersion()+" "; // TODO: Do something ... int mcc = cx.getResources().getConfiguration().mcc; int mnc = cx.getResources().getConfiguration().mnc; str +="IMSI MCC (Mobile Country Code): " +String.valueOf(mcc) + " "; str +="IMSI MNC (Mobile Network Code): " +String.valueOf(mnc) + " "; result = str; return result; }在上述的代碼中,首先調(diào)用系統(tǒng)的getSystemService (Context.TELEPHONY_SERVICE)方法獲取一個(gè)TelephonyManager對(duì)象tm,進(jìn)而調(diào)用其方法 getDeviceId()獲取DeviceId信息,調(diào)用getDeviceSoftware Version()獲取設(shè)備的軟件版本信息等。1.2.3 查看硬件信息   1.2.3.1 獲取CPU信息可以在手機(jī)設(shè)備的/proc/cpuinfo中獲取CPU信息,調(diào)用CMDEexecute執(zhí)行系統(tǒng)的cat的命令,取/proc/cpuinfo的內(nèi)容,顯示的就是其CPU信息,實(shí)現(xiàn)代碼如下:Java代碼:在上述的代碼中,首先調(diào)用系統(tǒng)的getSystemService (Context.TELEPHONY_SERVICE)方法獲取一個(gè)TelephonyManager對(duì)象tm,進(jìn)而調(diào)用其方法 getDeviceId()獲取DeviceId信息,調(diào)用getDeviceSoftware Version()獲取設(shè)備的軟件版本信息等。1.2.3 查看硬件信息   1.2.3.1 獲取CPU信息可以在手機(jī)設(shè)備的/proc/cpuinfo中獲取CPU信息,調(diào)用CMDEexecute執(zhí)行系統(tǒng)的cat的命令,取/proc/cpuinfo的內(nèi)容,顯示的就是其CPU信息,實(shí)現(xiàn)代碼如下:Java代碼: public static String fetch_cpu_info() { String result = null; CMDExecute cmdexe = new CMDExecute(); try { String[ ] args = {"/system/bin/cat", "/proc/cpuinfo"}; result = cmdexe.run(args, "/system/bin/"); Log.i("result", "result=" + result); } catch (IOException ex) { ex.printStackTrace(); } return result; } 上述代碼使用CMDExecute,調(diào)用系統(tǒng)中的"/system/bin/cat"命令查看"/proc/cpuinfo"中的內(nèi)容,即可得到CPU信息。

android系統(tǒng)中的資源類(lèi)型有哪幾種

Android 資源類(lèi)型

1.字符串資源

1.普通字符串

2.字符串?dāng)?shù)組

復(fù)制代碼

resources

string-array name="planets_array"

itemaaa/item

itembbb/item

/string-array

/resources

復(fù)制代碼

獲取方式:getResources().getStringArray(R.array.planets_array)

3.復(fù)數(shù)字符串資源

某些自然語(yǔ)言中,不同的數(shù)字在使用方法上會(huì)有所不同,比如one book,two books。當(dāng)數(shù)量大于1時(shí),會(huì)使用不同的名詞或其它復(fù)數(shù)形式;

復(fù)制代碼

resources

plurals name="numberOfp"

item quantity="one"one person/item

item quantity="other"more persons/item

/plurals

/resources

復(fù)制代碼

quantity屬性的值除了one和other外,還可以是zero,two,few,many;

引用復(fù)數(shù)字符串:

// 引用數(shù)字為1的復(fù)數(shù)字符串

getResources().getQuantityString(R.pluarlas.numberOfp,1);

// 引用數(shù)字為其它值的復(fù)數(shù)字符串

getResources().getQuantityString(R.pluarlas.numberOfp,10,10);

4.占位符格式化字符串

常用的格式化字符串三種方法:

1.在字符串中使用引號(hào)

字符串中的值雖然可以隨意指定,但是當(dāng)遇到特殊符號(hào)時(shí)(雙引號(hào),單引號(hào))就需要采取特殊的方法來(lái)處理這些符號(hào)。

如果是單引號(hào)(')可以使用轉(zhuǎn)義符(\)或用雙引號(hào)(")將整個(gè)字符串括起來(lái),如果是雙引號(hào),可以在雙引號(hào)前使用轉(zhuǎn)義符(\)。

resources

string name="str1""This'll work"/string This'll work

string name="str2"This\'ll work/string This'll work

string name="str3"\"apple\"/string "apple"

/resources

2.用占位符格式化字符串

使用String.format(String,Object...)方法可以格式化帶占位符的字符串,只需要在字符串中插入占位符,就可以使用String.format方法格式化字符串資源,format方法要求的占位符用%1,%,...,%n,其實(shí)第n個(gè)占位符與format方法的n+1個(gè)參數(shù)值對(duì)應(yīng);

resources

!-- $s表示該占位符被字符串替換,$d表示該占位符被整數(shù)替換 --

string name="str1"hello,%1$s!You have %2$d new message/string

/resources

String str1 =String.format(getResources().getString(R.string.str1), "ly", 17);

3.使用HTML標(biāo)簽格式化字符串資源

字符串資源支持一些HTML標(biāo)簽,因此可以直接在字符串資源中使用這些HTML標(biāo)簽格式化字符串

字符串資源支持如下的HTML標(biāo)簽

b粗體字

i斜體定

u帶下劃線的字

有時(shí)需要同時(shí)使用HTML標(biāo)簽和占位符格式化字符串,如果使用String.format方法格式化字符串,會(huì)忽略字符串中的所有HTML標(biāo)簽。為了使format方法可以格式化帶

HTML標(biāo)簽的確字符,需要使用Html.formHTML方法處理字符串;

resources

string name="hello_world"Welcome to bandroid/b/string

string name="str2"Hello,%1$s! You have b %2d new messages /b/string !--同時(shí)包含占位符和html標(biāo)簽的字符串--

/resources

由于需要使用Html.formHTML方法處理字符串,因此HTML標(biāo)簽中的 "" 需要使用 "" 表示 "" 并不需要處理

獲取字符串:

String text = String.format(getResources().getString(R.string.str2), "ly", 10);

CharSequence styledText = Html.fromHtml(text);

// 如果format的某個(gè)參數(shù)包含HTML的特殊字符,如"","",可以使用如下方式讀取字符串的值;

String escapedUsername = TextUtils.htmlEncode("");

String text1 = String.format(getResources().getString(R.string.str2), "ly", 20);

2.Layout資源

1、如果根節(jié)點(diǎn)是View,除了requestFocus標(biāo)簽外,不能添加任何子標(biāo)簽,requestFocus可能被添加到布局文件的任何View中,表示該標(biāo)簽對(duì)應(yīng)的控件在顯示時(shí)處于焦點(diǎn)狀態(tài),整個(gè)布局文件只能有一個(gè)requestFocus標(biāo)簽

2、根節(jié)點(diǎn)是ViewGroup,常用的布局都是ViewGroup的子類(lèi)

3、重用布局文件

如果想重用某個(gè)布局文件,可以使用include標(biāo)簽

include layout="@layout/xx_layout" /

如果想讓一個(gè)布局文件被另一個(gè)布局文件引用(使用include標(biāo)簽),可以使用merge作為被引用布局文件的根節(jié)點(diǎn),由于merge并不會(huì)生成任何標(biāo)簽(在大量引用布局文件時(shí)不至于生成大量無(wú)用的標(biāo)簽),但是xml文件必須要有一個(gè)根節(jié)點(diǎn),因此merge所起的作用就是作為xml文件的根節(jié)點(diǎn),以使xml文件在編譯時(shí)不至于出錯(cuò),可以把merge當(dāng)成FrameLayout使用;

3.圖像資源

在圖像資源中可以存儲(chǔ)圖像文件,還可以使用xml格式的圖像資源來(lái)控件圖像的狀態(tài)和行為;

1.普通圖像資源

Drawable da = getResources().getDrawable(R.drawable.xxx);

2.xml圖像資源

xml圖像資源其實(shí)就是在drawable目錄中指定的xml文件,此種方式可以額外指定圖像的某些屬性,如圖像拉動(dòng)、排列方式;

bitmap xmlns:android=""

android:src="@drawable/ic_launcher"

android:tileMode="repeat"

/bitmap

3.Nine-Patch圖像資源

Nine-Patch圖像資源文件必須以9.png作為文件擴(kuò)展名,如abc.9.png

該圖像資源的主要作用是:防止圖像的某一部分被拉伸;確定將圖像作為背景圖的控件中內(nèi)容顯示的位置;

Android SDK本身提供了一個(gè)Draw 9-patch的工具,啟動(dòng)sdk目錄\tools\draw9patch.bat命令啟動(dòng)該工具;

可以通過(guò)此工具在png圖的四周繪制1個(gè)像素粗的直線,上邊緣和左邊緣的直線分別表示圖像在水平和垂直方向可位值的范圍。如果水平或垂直方向的某個(gè)區(qū)域不需要拉伸,則可不繪制相應(yīng)的直線;右邊緣和下邊緣的直線分別表示圖像所在控件中內(nèi)容的顯示范圍,內(nèi)容只在右邊緣和下邊緣繪制直線的區(qū)域顯示,表示內(nèi)容顯示范圍和拉伸范圍的兩給直線有一個(gè)重要區(qū)別就是表示內(nèi)容顯示范圍的直線中間不能斷開(kāi),而表示拉伸范圍的直線中間可以斷開(kāi);

Nine-Patch圖像資源與普通圖像資源引用方法相同,在引用時(shí)只寫(xiě)文件名,活力.9.png;

4.XML Nine-Patch圖像資源

Nine-Patch圖像資源也有與其對(duì)應(yīng)的xml圖像資源,使用nine-patch標(biāo)簽來(lái)引用Nine-Patch格式的圖像,有一個(gè)設(shè)置抖動(dòng)的android:dither屬性;

5.圖層資源

圖層資源類(lèi)似于FrameLayout不同的是FrameLayout標(biāo)簽中可以包含任意的控件,而圖層資源每一層都只有是圖像,定義圖層資源必須使用layer-list作為資源文件的根節(jié)點(diǎn),layer-list標(biāo)簽中包含多個(gè)item標(biāo)簽,每一個(gè)標(biāo)簽表示一個(gè)圖像,最后一個(gè)item標(biāo)簽顯示在最頂層;

默認(rèn)情況下,圖像會(huì)盡量充滿(mǎn)顯示圖像的范圍,圖像可能會(huì)有拉伸,為了避免圖像拉伸,可以在item標(biāo)簽中使用bitmap標(biāo)簽引用圖像;

復(fù)制代碼

layer-list xmlns:android=""

item

android:bottom="10dip" 底端偏移的像素

android:left="10dip" 左側(cè)偏移的像素

android:right="10dip" ...

android:top="10dip" ...

bitmap

android:gravity="center"

android:src="@drawable/hell" /

/item

/layer-list

復(fù)制代碼

某些情況下,可以使用圖層來(lái)代替FrameLayout

6.圖像狀態(tài)資源,處理控件不同狀態(tài)下的顯示狀態(tài)

復(fù)制代碼

selector xmlns:android=""

item android:drawable="@drawable/bm" android:state_focused="true"/item

item android:drawable="@drawable/bm" android:state_pressed="true"/item

item android:drawable="@drawable/bm"/item

/selector

// android:state_focused/pressed設(shè)置為true表示當(dāng)前item的drawable屬性為獲取焦點(diǎn)和按下時(shí)的drawable樣式

復(fù)制代碼

7.圖像級(jí)別(Level)資源

圖像資源狀態(tài)只能指定幾種有限的狀態(tài),可以通過(guò)圖像級(jí)別指定更多的狀態(tài);圖像級(jí)別是一個(gè)整數(shù)的區(qū)間,可以通過(guò)ImageView.setImageLevel或Drawable.setLevel方法切換不同狀態(tài)的圖像;圖像級(jí)別資源是xml文件,必須以level-list為根節(jié)點(diǎn),每一個(gè)item表示一個(gè)級(jí)別區(qū)間,下面是一個(gè)xml文件;通過(guò)ImageView.setImageLevel(level),根據(jù)level所在的區(qū)間設(shè)定顯示的圖像資源,如果level不在任一區(qū)間內(nèi)則清空ImageView當(dāng)前圖像;

level-list xmlns:android=""

item android:maxLevel="2" android:minLevel="0" android:drawable="@drawable/hell" /

item android:maxLevel="4" android:minLevel="3" android:drawable="@drawable/hell" /

/level-list

8.淡入淡出(Cross-fade)資源

也是切換兩個(gè)圖像(不支持多于兩個(gè)圖像的切換),并且使這兩個(gè)圖像以淡入淡出效果進(jìn)行切換,如電燈在開(kāi)關(guān)時(shí)逐漸變亮或逐漸變暗;

transition xmlns:android=""

item android:drawable="@drawable/hell"/

item android:drawable="@drawable/hell"/

/transition

TransitionDrawable da = ...;

// 從第一張圖片切換到第二張圖片,時(shí)間效果為1秒

da.startTransition(1000);

// 從第二張圖片切換到第一張圖片,時(shí)間效果為1秒

da.reverseTransition(1000);

9.嵌入(insert)圖像資源

使用場(chǎng)景:要顯示的圖像要求要小于裝載圖像的View(圖小于View區(qū)域),也是通過(guò)xml資源定義,只有一個(gè)節(jié)點(diǎn)inset。

inset xmlns:android=""

android:drawable="@drawable/hell"

android:insetLeft="10dip" !--圖像距離左邊的距離,延伸--上/下/右的距離--

/inset

10.剪切(Clip)圖像資源,使用剪切圖像資源可以只顯示圖像的一部分,如可以通過(guò)此來(lái)制作進(jìn)度條;

clip xmlns:android=""

android:clipOrientation="horizontal" // 指定截取的方向

android:drawable="@drawable/hell" // 指定要截取的圖像

android:gravity="left" // 指定截取的方式,在此為從左側(cè)開(kāi)始截取

/clip

ClipDrawable cd = ...;

cd.setLevel(1000);

上面ClipDrawable.setLevel(level)設(shè)置截取的圖像寬度,ClipDrawable預(yù)設(shè)了最大值10000(表示不進(jìn)行截取),最小值為0(表示不顯示);

11. 比例(Scale)圖像資源

scale xmlns:android=""

android:drawable="@drawable/hell"

android:scaleGravity="center" // 設(shè)置圖像顯示的位置

android:scaleHeight="70%" // 設(shè)置圖像顯示的高度

android:scaleWidth="80%" // 設(shè)置圖像顯示的寬度

/scale

12.形狀資源

復(fù)制代碼

shape xmlns:android=""

android:shape="rectangle" shape可以指定就矩形,oval(橢圓),line(直線),ring(圓)

corners 定義圓角

/corners

gradient

android:angle="45"

android:startColor="#000000"

android:endColor="#FFFFFF" 定義顏色漸變,從左下角到或上角

/gradient

padding 定義控件內(nèi)容到邊框的距離

/padding

stroke 定義邊線

/stroke

solid 定義填充

/solid

size 定義大小

/size

/shape

復(fù)制代碼

13.菜單資源

菜單不僅可以在onCreateContextMenu或onCreateOptionsMenu方法中通過(guò)代碼創(chuàng)建,還可以在res/menu目錄中建立相應(yīng)的菜單資源文件,并在上面兩個(gè)方法中加載菜單資源;

菜單資源文件必須以menu標(biāo)簽作為根節(jié)點(diǎn),每一個(gè)菜單項(xiàng)用一個(gè)item表示,如果要定義子菜單,可以在item標(biāo)簽中包含menu標(biāo)簽;如果想將多個(gè)菜單項(xiàng)劃為一組,可以使用group包含多個(gè)item標(biāo)簽;

復(fù)制代碼

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.main, menu);

return true;

}

復(fù)制代碼

查看MenuInflater.inflate(int,Menu)

復(fù)制代碼

/**

* Inflate a menu hierarchy from the specified XML resource.

*

* @param menuRes Resource ID for an XML layout resource to load (e.g., codeR.menu.main_activity/code)

* @param menu The Menu to inflate into. The items and submenus will be added to this Menu.

*/

public void inflate(int menuRes, Menu menu) {

XmlResourceParser parser = null;

try {

parser = mContext.getResources().getLayout(menuRes);

AttributeSet attrs = Xml.asAttributeSet(parser);

parseMenu(parser, attrs, menu);

} catch ...finally {

if (parser != null) parser.close();

}

}

復(fù)制代碼

14.樣式與主題(style/theme)

1.樣式style

android中樣式和css中樣式作用是一樣的,都是用于為界面元素定義顯示風(fēng)格,它是一個(gè)包含一個(gè)或者多個(gè)控件屬性的集合。

定義樣式需要在res/values/styles.xml中進(jìn)行定義,如下是一個(gè)樣式的定義:

style name="textViewStyle"

item name="android:textSize"22sp/item

item name="android:textColor"#FF0000/item

/style

style name="textViewStyle1" parent="textViewStyle"/style!-- 此樣式繼承自textViewStyle --

style name="textViewStyle.Livingstone"!-- 樣式繼承的另一種寫(xiě)法,但不可用此寫(xiě)法繼承Android自帶的定義樣式? --

item name="android:textColor"#00FF00/item

/style

所有定義的樣式都會(huì)在R文件中自動(dòng)生成一個(gè)資源ID,加一個(gè)點(diǎn)表示樣式繼承會(huì)生成上圖所示的資源id;

樣式的引用:

TextView

style="@style/textViewStyle"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="hello" /

2.主題Theme

主題應(yīng)用于整個(gè)應(yīng)用或者activity,樣式應(yīng)用于具體的控件上。主題的應(yīng)用與樣式定義一樣,不同的是主題還可以設(shè)置窗口的顯示風(fēng)格;主題的引用需要在清單文件中進(jìn)行引用,如引用到整個(gè)應(yīng)用之上就需要在Application節(jié)點(diǎn)中進(jìn)行配置引用,而引用到單個(gè)Activity只需要在此Activity中進(jìn)行配置引用;

復(fù)制代碼

style name="Livingstonetheme"!--此定義是一個(gè)無(wú)Title的主題--

item name="android:windowNoTitle"true/item

item name="android:windowFullscreen"?android:windowNoTitle/item

!-- 問(wèn)號(hào)表示引用此主題中android:windowNoTitle屬性的值 --

item name="android:textSize"18sp/item

/style

復(fù)制代碼

android系統(tǒng)定義了一些屬性,如android:theme="@android:style/Theme.Dialog",該主題可以讓Activity看起來(lái)像一個(gè)對(duì)話框,更多主題可以在文檔reference-android-R.style中查看。當(dāng)主題里面的樣式屬性值與樣式里面的屬性值發(fā)生沖突的時(shí)候會(huì)顯示樣式里面的值;

15.其它資源

在資源文件中還可以包括尺寸(dimen)、整數(shù)(integer)、布爾(bool) 、整形數(shù)組資源(integer-array)、資源數(shù)組(array)、顏色(color)

TypedArray ta = getResources().obtainTypedArray(int id); // 獲取數(shù)組資源,包括integer-array、array

Final總結(jié):

除了res/values目錄中的資源名,其它目錄的資源都會(huì)以文件名在R類(lèi)的相應(yīng)子類(lèi)中生成變量;而res/values中的資源會(huì)以name屬性值為變量名在R類(lèi)的相應(yīng)子類(lèi)中生成變量;


標(biāo)題名稱(chēng):androidresources類(lèi),安卓resources
轉(zhuǎn)載來(lái)源:http://weahome.cn/article/dsdscdp.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部