在android開發過程中,經常會用到各種資源:字串、顏色、樣式、……經常會被這些資源搞得暈頭轉向,容易混淆,尤其是幾種drawable型別的資源。下面對這些資源進行整理分類,讓它們的格式和功能一目了然。
android的應用資源可以分為兩大類:
- 可以通過r資源清單類訪問的資源,儲存在res目錄下。
- 無法通過r資源清單類訪問的原生資源,儲存在assets目錄下。
資源檔案目錄
1、res/values目錄
不建議在同一分資源檔案中定義各種值,勢必增加程式的維護難度,最好使用不同的檔案來存放不同型別的值。如下:
strings.xml(字串資源,布林資源bools.xml,整型資源integers.xml)
<?xml version="1.0" encoding="utf-8"?>
hello world!
colors.xml(顏色資源)
<?xml version="1.0" encoding="utf-8"?>
#ffffff
#000000
dimens.xml(尺寸資源)
<?xml version="1.0" encoding="utf-8"?>
16dp
16dp
20sp
arrays.xml(陣列資源:普通型別陣列array,字串陣列string-array,整型陣列integer-array)
<?xml version="1.0" encoding="utf-8"?>
@color/white
@color/black
@string/hello_world
//activity中使用普通陣列
typedarray colors = res.obtaintypedarray(r.array.color_array);
view.setbackgrounddrawable(colors.getdrawable(position));
//activity中使用字串、整型陣列
string texts = getresources().getstringarray(r.array.string_arr);
styles.xml(樣式資源,還有主題theme資源,定義格式通style一樣,主題資源對整個應用中的activity或指定的activity起作用,而style可以用於單個view元件)
<?xml version="1.0" encoding="utf-8"?>
2、res/drawable目錄
drawable資源是android中使用最廣泛的資源,也是最靈活的一種資源,可以直接使用.png、.jpg、.gif、.9.png等資源,還可以使用能被系統編譯成drawable子類的xml檔案。drawable資源通常儲存在res/drawable目錄,也可儲存在res/drawable-ldpi、res/drawable-mdpi、res/drawable-hdpi、res/drawable-xhdpi目錄下
drawable資源
//直接放在drawable目錄下,就會出現在r清單中
edit_font_color.xml(statelistdrawable資源,drawable物件會根據目標元件的狀態的改變而自動切換)
<?xml version="1.0" encoding="utf-8"?>
my_bar.xml(layerdrawable資源,包含乙個drawable物件陣列,系統按索引從小到大依次從下到上繪製這些drawable)
<?xml version="1.0" encoding="utf-8"?>
用這個drawable定義乙個拖動條
效果如下
my_shape.xml(shapedrawable資源,定義基本的幾何圖形,可以用作定義幾何邊框)
<?xml version="1.0" encoding="utf-8"?>
效果如下
my_clip.xml(clipdrawable資源,從其他資源上擷取乙個片段,引數表示從**開始擷取,擷取方式。此drawable有乙個setlevel(int level)方法,0<= level<=10000,表示擷取的區域,可以用timer動態改變level值,達到徐徐張開得效果,也可以用clipdrawable定義進度條)
<?xml version="1.0" encoding="utf-8"?>
3、res/anim目錄
my_anim.xml(animationdrawable資源,也是一種drawable資源,代表乙個動畫,支援逐幀動畫和補間動畫,可以進行透明度、縮放、位移、旋轉變換)
<?xml version="1.0" encoding="utf-8"?>
//activity中使用animationdrawable資源
imageview image = (imageview)findviewbyid(r.id.image);
animation anim = animationutils.loadanimation(this, r.anim.my_anim);
anim.setfillafter(true);//保留動畫結束狀態
image.startanimation(amin);
4、res/layout目錄
存放android的layout資源,這個從第一天學android就開始用,此處就不贅述。
5、res/menu目錄
後面補充
6、res/raw目錄上面已經介紹了assets,此處著重於assets目錄下資源的使用。
//activity中使用assert下的資源
assetmanager am = getassets();
trycatch(exception e)
Android資源 布局資源
一 概述 1 android的圖形介面展示可以分為三層 activity window和view,而view又可以分為view 元件,如textview 和viewgroup 布局,如線性布局 2 布局是指元件在activity中的呈現方式,有兩種方式建立布局 a 利用xml檔案,activity通...
Android資源保護
我們參考proguard obfuscator的方式,對apk中資源檔名使用簡短無意義名稱進行替換,給破解者製造困難,以做到資源的相對安全。我們可以通過修改aapt 在生成resources.arsc和 ap 時把資源檔案的名稱替換掉,從而保護資源。aapt編譯資源的 我們發現修改aapt在處理資源...
Android 資源引用
命名空間 命名空間即為避免不同開發包變數衝突,如甲公司 乙公司均出了開發包,兩個開發包大量變數名相同,為避免衝突,兩個公司都給開發包規定了命名空間,引用開發包中的變數時必須新增命名空間名 android為例 xml檔案中第乙個元素 設定命名空間xmlns android 則android layou...