關于Android中使用的資源文件拷肌,前面陸陸續(xù)續(xù)也介紹了不少到旦,這節(jié)課給大家介紹一下Android中使用到的“值資源”。
可以看到上面的截圖巨缘,在values文件夾下包含了很多個xml文件添忘,每個文件代表一種值類型,里面定義了具體的類型資源若锁。
看一下在values下可以定義哪些資源文件:
Bool
在bools.xml中定義bool值
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool
name="bool_name"
>[true | false]</bool>
</resources>
eg:
保存路徑:res/values/bools.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="screen_small">true</bool>
<bool name="adjust_view_bounds">true</bool>
</resources>
在Java中使用:
Resources res = getResources();
boolean screenIsSmall = res.getBoolean(R.bool.screen_small);
在XML中使用:
<ImageView
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:src="@drawable/logo"
android:adjustViewBounds="@bool/adjust_view_bounds" />
Color
在XML文件中定義顏色值
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color
name="color_name"
>hex_color</color>
</resources>
eg:
保存路徑:res/values/colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="opaque_red">#f00</color>
<color name="translucent_red">#80ff0000</color>
</resources>
在Java中使用:
Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
在XML中使用:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/translucent_red"
android:text="Hello"/>
Dimension
在XML定義尺寸值
尺寸可以使用以下單位:
dp - 與密度無關的像素搁骑,主要應用于布局中的間距
sp - 與dp類似,主要應用與字體大小
pt - 屏幕物理長度單位, 表示一個點又固,是屏幕的物理尺寸仲器。大小為1英寸的1/72。
px - 對應屏幕上實際像素仰冠。這個單位不推薦使用乏冀,因為不同的設備可以具有不同每英寸不同數(shù)量的像素。
mm- 表示毫米洋只,基于屏幕的物理尺寸辆沦。
in -表示英寸,是屏幕的物理尺寸识虚。每英寸等于2.54厘米肢扯,我們經(jīng)常所說的屏幕多少寸,指的是對角線的長度担锤。
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen
name="dimension_name"
>dimension</dimen>
</resources>
eg:
保存路徑: res/values/dimens.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
在Java中使用:
Resources res = getResources();
float fontSize = res.getDimension(R.dimen.font_size);
在XML中使用:
<TextView
android:layout_height="@dimen/textview_height"
android:layout_width="@dimen/textview_width"
android:textSize="@dimen/font_size"/>
ID
在XML定義id值蔚晨,它會映射到R.java文件,具有唯一性肛循,我們在程序中可以直接使用它作為id铭腕。
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item
type="id"
name="id_name" />
</resources>
eg:
保存路徑:res/values/ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item type="id" name="button_ok" />
<item type="id" name="dialog_exit" />
</resources>
在XML中使用:
<Button android:id="@id/button_ok"
style="@style/button_style" />
Integer
在XML中定義整型值银择。
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer
name="integer_name"
>integer</integer>
</resources>
eg:
保存路徑:res/values/integers.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="max_speed">75</integer>
<integer name="min_speed">5</integer>
</resources>
在Java中使用:
Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);
Integer-Array
整型數(shù)組,對應的也有字符串數(shù)組谨履。
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array
name="integer_array_name">
<item
>integer</item>
</integer-array>
</resources>
eg:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
</resources>
在Java中使用:
Resources res = getResources();
int[] bits = res.getIntArray(R.array.bits);
Typed Array
在XML中定義類型資源
語法:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array
name="integer_array_name">
<item>resource</item>
</array>
</resources>
eg:
保存位置: res/values/arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="icons">
<item>@drawable/home</item>
<item>@drawable/settings</item>
<item>@drawable/logout</item>
</array>
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
</resources>
在Java中使用:
Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);
TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);
總結
上面給大家整理了關于Android中的values資源,這是我們在實際開發(fā)中用得到的資源熬丧,如何合理去使用它們要根據(jù)自己的使用場景笋粟,Android為我們提供這些資源就是為了讓我們更加方便的開發(fā),減少硬編碼的情形析蝴,也是為了規(guī)范我們開發(fā)害捕,把資源和邏輯代碼分開也會讓我們更加容易理解程序的設計模式。
本文參考:
http://www.android-doc.com/guide/topics/resources/more-resources.html