一、資源訪問:

(一)、概念:
Android中的資源是指可以在代碼中使用的外部文件,這些文件作為應(yīng)用程序的一部分,被編譯到應(yīng)用程序中。在項(xiàng)目中,這些資源被保存到Android應(yīng)用的res目錄下。
(二)、資源分類:
id;
字符串資源文件;
顏色資源
尺寸資源文件
布局資源
數(shù)組資源
樣式和主題資源
菜單資源
已編譯的任意XML資源文件【重要】: res/xml
未編譯的原始資源文件: res/raw
圖像(Drawable)資源
普通圖像資源
xml圖像資源:bitmap
圖層(Layer)資源:layer-list , item
圖像狀態(tài)(State)資源:selector , item
圖像級(jí)別(Level)資源:level-list , item
淡入淡出(CrossFade)資源:transition , item(只支持兩個(gè))
外形(Shape)資源:shape(shape , gradient , padding ,corners , stroke)
動(dòng)畫資源
透明度補(bǔ)間動(dòng)畫 alpha
縮放補(bǔ)間動(dòng)畫 scale
旋轉(zhuǎn)補(bǔ)間動(dòng)畫 rotate
移動(dòng)補(bǔ)間動(dòng)畫 translate
屬性動(dòng)畫:res/animator (api11之后出現(xiàn))
逐幀動(dòng)畫: res/anim animation-list , item
補(bǔ)間動(dòng)畫: res/anim
【備注:】資源編譯器會(huì)編譯除了raw資源以外的所有資源,并將它們?nèi)糠诺阶罱K的.apk文件中。apk(Android Package)包含Android應(yīng)用程序的代碼和資源。
(三)、各種資源文件的xml格式:
1、字符串資源文件:
示例代碼:
<resources> <string name="red">紅色</color> <string name="green">綠色</color> <string name="blue">藍(lán)色</color> </resources>
Java文件中獲取方式:getResources().getString(R.string.red);
2、顏色資源文件:
示例代碼:
<resources> <color name="red">#f00</color> <color name="green">#0f0</color> <color name="blue">#00f</color> </resources>
在需要調(diào)用該顏色的地方寫法是:android:background="@color/blue"
Java文件中獲取方式:getResources().getColor(R.color.blue);
3、尺寸資源文件:
示例代碼:
<resources> <dimen name="title">20dp</color> <dimen name="content">10dp</color> </resources>
Java文件中獲取方式:getResources().getDimension(R.dimen.title);
4、數(shù)組資源文件:
Android中,不推薦將數(shù)組直接定義在java文件中,而是使用數(shù)組資源文件來定義數(shù)組。
定義在res下values目錄下:arrays.xml文件中。格式如下:
根元素:<resources></resources>
子元素:可以有三種。
<array></array>:稱為類型數(shù)組Typed-Array資源(或者:資源數(shù)組資源)
<string-array></string-array>
<integer-array></integer-array>
下級(jí)子元素:<item>數(shù)值</item>
示例代碼:
<resources> <string-array name="choiceItems"> <item >主屏模式</item> <item >wifi設(shè)置</item> <item >藍(lán)牙設(shè)置</item> <item >網(wǎng)絡(luò)設(shè)置</item> <item >More</item> </string-array> </resources>
Java文件中獲取方式:getResources().getStringArray(R.array.choiceItems);
【備注:】如果是int型數(shù)組,則格式如下:
<resources> <integer-array name="age"> <item >20</item> <item >30</item> <item >40</item> <item >50</item> </integer-array> </resources>
Java文件中獲取方式:getResources().getIntArray(R.array.age);
【備注:】如果是資源數(shù)組資源,則格式如下:
<resources> <array name="icons"> <item >@drawable/home</item> <item >@drawable/setting</item> <item >@drawable/logout</item> </array> <array name="title"> <item >首頁</item> <item >設(shè)置</item> <item >退出</item> </array> </resources>
Java文件中獲取方式:
TypedArray arrIcons = getResources().obtainTypedArray(R.array.icons);
Drawable drawable = arrIcons.getDrawable(0);
5、原始XML資源
位置:res/xml目錄下;
定義格式:格式良好的,沒有特殊要求的普通xml文件;
Java文件中獲取方式:getResources().getXml(R.xml.文件名稱);
解析xml的核心代碼:
// 從資源文件夾中讀取原始xml資源文件 XmlResourceParser pullParser = getResources().getXml(R.xml.citylist);
//將讀取xml資源文件返回的XmlResourceParser 對(duì)象繼續(xù)解析,獲取到xml節(jié)點(diǎn)中需要的數(shù)據(jù)。
//備注:XmlResourceParser 類是XmlPullParser的子類
public List<Map<String, Object>> parseXML(XmlResourceParser pullParser,
String tagName) {
List<Map<String, Object>> list = null;
Map<String, Object> map = null;
int event;
try {
// 根據(jù)讀取的xml節(jié)點(diǎn)來獲取事件類型
event = pullParser.getEventType();
// 只要不是文檔結(jié)束就一直執(zhí)行循環(huán)
while (event != XmlPullParser.END_DOCUMENT) {
// 獲取每個(gè)節(jié)點(diǎn)的節(jié)點(diǎn)名稱
String nodeName = pullParser.getName();
// 根據(jù)事件類型來執(zhí)行不同的操作
switch (event) {
// 當(dāng)文檔開始就實(shí)例化list
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<Map<String, Object>>();
break;
// 根據(jù)節(jié)點(diǎn)的不同來執(zhí)行實(shí)例化map和往map中添加數(shù)據(jù)的操作
case XmlPullParser.START_TAG:
if (nodeName.equals(tagName)) {
map = new HashMap<String, Object>();
// 本例中,沒有文本節(jié)點(diǎn),有n個(gè)屬性節(jié)點(diǎn),而所需要的內(nèi)容全在屬性節(jié)點(diǎn)中。故使用getAttributeValue(index)方法
// getAttributeValue(index)方法中的
// index是指節(jié)點(diǎn)的索引下標(biāo),從0開始。可以理解成屬性點(diǎn) 順序。
map.put(pullParser.getAttributeValue(3),
pullParser.getAttributeValue(2));
list.add(map);
}
break;
}
// 執(zhí)行循環(huán)
event = pullParser.next();
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}6、原生文件資源: raw
【備注:】raw目錄下主要放置的資源有音頻、視頻等文件。raw目錄下的文件會(huì)在R.java中被注冊(cè)。
如何訪問raw目錄下的文件?
InputStream is = getResources().openRawResource(R.raw.文件名);
7、圖像資源:
A、普通圖像資源:
Java文件中獲取方式:
getResources().getDrawable(R.drawable.p_w_picpathname);
int resId = getResources().getIdentifier(imgName, "drawable", this.getPackageName());
view.getResources().getResourceName(resid)
int resId = context.getResources().getIdentifier("圖片名稱", "drawable", context.getPackageName());
p_w_picpathView_main_showpic.setImageResource(resId);B、xml圖像資源:bitmap
bitmap android:gravity
C、圖層(Layer)資源:layer-list
<?xml version="1.0"encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android1" android:gravity="center"/> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android2" android:gravity="center"/> </item> </layer-list>
D、圖像狀態(tài)(State)資源:selector
<?xml version="1.0"encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"android:drawable="@drawable/pressed"/> <item android:state_focused="true"android:drawable="@drawable/focused"/> <item android:drawable="@drawable/normal"/> </selector>
E、圖像級(jí)別(Level)資源:level-list
//UI代碼: <?xml version="1.0"encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/lamp_off" android:minLevel=“5" android:maxLevel="10"/> <item android:drawable="@drawable/lamp_on" android:minLevel=“11" android:maxLevel="20"/> </level-list>
//java代碼:
public class LevelActivity extends Activity {
private ImageView p_w_picpathview_lamp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level);
p_w_picpathview_lamp = (ImageView) findViewById(R.id.p_w_picpathview_lamp);
}
public void clickButton(View view) {
switch (view.getId()) {
case R.id.button_level_lampoff:
p_w_picpathview_lamp.setImageLevel(9);
break;
case R.id.button_level_lampon:
p_w_picpathview_lamp.setImageLevel(15);
break;
}
}
}F、淡入淡出(CrossFade)資源:transition
<?xml version="1.0"encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <!-- transition標(biāo)簽中只能有兩個(gè)item標(biāo)簽,也就是只支持兩個(gè)圖像的切換 --> <itemandroid:drawable="@drawable/lamp_off"/> <itemandroid:drawable="@drawable/lamp_on"/> </transition>
//java代碼:
public class CrossfadeActivity extends Activity {
private ImageView p_w_picpathview_lamp;
private TransitionDrawable drawable = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_crossfade);
p_w_picpathview_lamp = (ImageView) findViewById(R.id.p_w_picpathview_lamp);
drawable = (TransitionDrawable) p_w_picpathview_lamp.getDrawable();
}
public void clickButton(View view) {
switch (view.getId()) {
case R.id.button_level_lampon:
drawable.startTransition(3000);
break;
case R.id.button_level_lampoff:
drawable.reverseTransition(3000);
break;
}
}
}G、外形(Shape)資源:shape
<?xmlversion="1.0"encoding="utf-8"?> <shape xmlns:android=" android:shape="rectangle"> <!-- shape有四個(gè)值:rectangle(矩形)、oval(橢圓)、line(直線)、ring(圓環(huán))--> <!-- 定義漸變色 ,從左下角到右上角繪制漸變色--> <gradient android:startColor="#FF00" android:endColor="#80FF00FF" android:angle="45"/> <!-- 定義控件內(nèi)容到邊界的距離--> <padding android:left="20dp" android:top="20dp" android:right="20dp" android:bottom="20dp"/> <!-- 定義邊框線的寬度及顏色--> <stroke android:width="2dp" android:color="#00F"/> <!-- 定義圓角半徑--> <corners android:radius="8dp"/> </shape>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章標(biāo)題:Android資源訪問-創(chuàng)新互聯(lián)
文章來源:http://chinadenli.net/article10/shhdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站策劃、網(wǎng)站內(nèi)鏈、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(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)
猜你還喜歡下面的內(nèi)容