Trang này xác định các loại tài nguyên sau đây mà bạn có thể tách riêng ra:
- Bool
- Tài nguyên XML chứa giá trị boolean.
- Màu
- Tài nguyên XML chứa một giá trị màu (màu thập lục phân).
- Thứ nguyên
- Tài nguyên XML chứa giá trị thứ nguyên (có đơn vị đo lường).
- Mã nhận dạng
- Tài nguyên XML cung cấp giá trị nhận dạng duy nhất cho các thành phần và tài nguyên của ứng dụng.
- Số nguyên
- Tài nguyên XML chứa giá trị số nguyên.
- Mảng số nguyên
- Tài nguyên XML cung cấp một mảng số nguyên.
- Mảng đã nhập
- Tài nguyên XML cung cấp
TypedArray
(bạn có thể sử dụng tài nguyên này cho một mảng các đối tượng có thể vẽ).
Bool
Một giá trị boolean được xác định trong XML.
Lưu ý: Bool là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
chứ không phải tên của tệp XML. Do đó, bạn có thể kết hợp tài nguyên bool với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<bool>
được dùng làm mã nhận dạng tài nguyên.- mã tham chiếu tài nguyên:
-
Trong Java:
R.bool.bool_name
Trong XML:@[package:]bool/bool_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
- phần tử:
- ví dụ:
- Tệp XML được lưu vào
res/values-small/bools.xml
:<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="screen_small">true</bool> <bool name="adjust_view_bounds">true</bool> </resources>
Mã xử lý ứng dụng sau đây truy xuất boolean:
Kotlin
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)Java
Resources res =
getResources()
; boolean screenIsSmall = res.getBoolean
(R.bool.screen_small);Tệp XML bố cục sau đây sử dụng boolean cho một thuộc tính:
<ImageView android:layout_height="fill_parent" android:layout_width="fill_parent" android:src="@drawable/logo" android:adjustViewBounds="@bool/adjust_view_bounds" />
Màu
Một giá trị màu được xác định trong XML.
Màu được chỉ định bằng giá trị RGB và kênh alpha. Bạn có thể sử dụng tài nguyên màu ở bất kỳ nơi nào chấp nhận giá trị màu hệ thập lục phân. Bạn cũng có thể sử dụng tài nguyên màu khi dự kiến chứa một tài nguyên có thể vẽ trong XML, chẳng hạn như android:drawable="@color/green"
.
Giá trị luôn bắt đầu bằng ký tự dấu thăng (#), theo sau là thông tin Alpha-Red-Green-Blue (Alpha-Đỏ-Xanh lục-Xanh dương) ở một trong các định dạng sau:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
Lưu ý: Màu sắc là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
(không phải tên của tệp XML). Do đó, bạn có thể kết hợp tài nguyên màu với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/colors.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<color>
được dùng làm mã nhận dạng tài nguyên.- mã tham chiếu tài nguyên:
-
Trong Java:
R.color.color_name
Trong XML:@[package:]color/color_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
- phần tử:
- ví dụ:
- Tệp XML được lưu vào
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>
Mã xử lý ứng dụng sau đây truy xuất tài nguyên màu:
Kotlin
val color: Int =
resources
.getColor
(R.color.opaque_red)Java
Resources res =
getResources()
; int color = res.getColor
(R.color.opaque_red);XML bố cục sau đây áp dụng màu sắc cho một thuộc tính:
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:textColor="@color/translucent_red" android:text="Hello"/>
Kích thước
Một giá trị kích thước được xác định trong tệp XML. Kích thước được biểu thị bằng một số theo sau là đơn vị đo lường, chẳng hạn như 10 px, 2 in hoặc 5 sp. Các đơn vị đo lường sau đây được Android hỗ trợ:
dp
- Pixel không phụ thuộc vào mật độ: Một đơn vị trừu tượng dựa trên mật độ vật lý của màn hình. Các đơn vị này tương ứng với màn hình 160 dpi (số điểm trên mỗi inch), trong đó 1 dp gần bằng với 1 px. Khi chạy trên màn hình có mật độ điểm ảnh cao hơn, số pixel được dùng để vẽ 1 dp sẽ được tăng tỷ lệ theo hệ số thích hợp với dpi của màn hình.
Tương tự như vậy, khi ở màn hình có mật độ điểm ảnh thấp hơn, số pixel dùng cho 1 dp sẽ được giảm xuống. Tỷ lệ dps trên điểm ảnh thay đổi theo mật độ điểm ảnh trên màn hình, nhưng không nhất thiết phải theo tỷ lệ trực tiếp. Việc sử dụng đơn vị dp (thay vì đơn vị px) là một giải pháp để làm cho các kích thước của chế độ xem trong bố cục thay đổi cho phù hợp với nhiều mật độ điểm ảnh trên màn hình. Giải pháp này mang đến tính nhất quán cho kích thước thực của các phần tử trên giao diện người dùng của nhiều thiết bị.
sp
- Pixel không phụ thuộc vào tỷ lệ – Tương tự như đơn vị dp, nhưng pixel được chia tỷ lệ theo lựa chọn ưu tiên của người dùng về kích thước phông chữ. Bạn nên sử dụng đơn vị này khi chỉ định kích thước phông chữ để chúng có thể được điều chỉnh theo cả mật độ màn hình và lựa chọn ưu tiên của người dùng.
pt
- Điểm: 1/72 inch dựa trên kích thước vật lý của màn hình, giả sử màn hình có mật độ là 72 dpi.
px
- Pixel: tương ứng với số pixel thực tế trên màn hình. Bạn không nên sử dụng đơn vị này vì cách trình bày thực tế có thể khác nhau giữa các thiết bị. Các thiết bị khác nhau có thể có số lượng pixel trên mỗi inch khác nhau và có thể có tổng số pixel nhiều hơn hoặc ít hơn trên màn hình.
mm
- Milimét: dựa trên kích thước vật lý của màn hình.
in
- Inch: dựa trên kích thước vật lý của màn hình.
Lưu ý: Kích thước là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
(không phải tên của tệp XML). Do đó, bạn có thể kết hợp tài nguyên kích thước với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<dimen>
được dùng làm mã nhận dạng tài nguyên.- mã tham chiếu tài nguyên:
-
Trong Java:
R.dimen.dimension_name
Trong XML:@[package:]dimen/dimension_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
- phần tử:
- ví dụ:
- Tệp XML được lưu vào
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>
Mã xử lý ứng dụng sau đây truy xuất một kích thước.
Kotlin
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)Java
Resources res =
getResources()
; float fontSize = res.getDimension
(R.dimen.font_size);Tệp XML bố cục sau đây áp dụng kích thước cho các thuộc tính:
<TextView android:layout_height="@dimen/textview_height" android:layout_width="@dimen/textview_width" android:textSize="@dimen/font_size"/>
Mã nhận dạng
Mã nhận dạng tài nguyên duy nhất được xác định trong tệp XML. Tên mà bạn cung cấp trong phần tử <item>
, các công cụ dành cho nhà phát triển Android sẽ tạo một số nguyên duy nhất trong lớp R.java
của dự án. Bạn có thể sử dụng số này làm giá trị nhận dạng cho tài nguyên của ứng dụng (chẳng hạn như View
trong bố cục của giao diện người dùng), hoặc một số nguyên duy nhất để sử dụng trong mã xử lý ứng dụng (chẳng hạn như mã nhận dạng cho hộp thoại hoặc mã kết quả).
Lưu ý: Mã nhận dạng là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
(không phải tên của tệp XML). Do đó, bạn có thể kết hợp tài nguyên mã nhận dạng với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
. Ngoài ra, tài nguyên mã nhận dạng không tham chiếu đến một mục tài nguyên thực tế: đó là một mã nhận dạng duy nhất mà bạn có thể đính kèm vào các tài nguyên khác hoặc dùng làm số nguyên duy nhất trong ứng dụng.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.- mã tham chiếu tài nguyên:
-
Trong Java:
R.id.name
Trong XML:@[package:]id/name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
- phần tử:
- ví dụ:
-
Tệp XML được lưu vào
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>
Đoạn mã bố cục sau đây sử dụng mã nhận dạng
"button_ok"
cho tiện íchButton
:<Button android:id="@id/button_ok" style="@style/button_style" />
Giá trị
android:id
ở đây không bao gồm dấu cộng trong tham chiếu mã nhận dạng, vì mã nhận dạng này đã tồn tại, như được xác định trong ví dụids.xml
trước đó. Khi bạn chỉ định một mã nhận dạng cho tài nguyên XML bằng dấu cộng ở định dạngandroid:id="@+id/name"
thì điều đó có nghĩa là mã nhận dạng"name"
chưa tồn tại và mã này đã được tạo.Một ví dụ khác là đoạn mã sau đây sử dụng mã nhận dạng
"dialog_exit"
làm giá trị nhận dạng duy nhất cho hộp thoại:Kotlin
showDialog
(R.id.dialog_exit)Java
showDialog
(R.id.dialog_exit);Trong cùng một ứng dụng, mã nhận dạng
"dialog_exit"
được so sánh khi tạo một hộp thoại:Kotlin
override fun
onCreateDialog
(id: Int): Dialog? { return when(id) { R.id.dialog_exit -> { ... } else -> { null } } }Java
protected Dialog
onCreateDialog
(int id) { Dialog dialog; switch(id) { case R.id.dialog_exit: ... break; default: dialog = null; } return dialog; }
Số nguyên
Số nguyên được xác định trong XML.
Lưu ý: Số nguyên là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
(không phải tên của tệp XML). Do đó, bạn có thể kết hợp tài nguyên số nguyên với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<integer>
được dùng làm mã nhận dạng tài nguyên.- mã tham chiếu tài nguyên:
-
Trong Java:
R.integer.integer_name
Trong XML:@[package:]integer/integer_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
- phần tử:
- ví dụ:
-
Tệp XML được lưu vào
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>
Mã xử lý ứng dụng sau đây truy xuất một số nguyên:
Kotlin
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Java
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
Mảng số nguyên
Một mảng số nguyên được xác định trong XML.
Lưu ý: Mảng số nguyên là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
chứ không phải tên của tệp XML. Do đó, bạn có thể kết hợp tài nguyên mảng số nguyên với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<integer-array>
được dùng làm mã nhận dạng tài nguyên.- loại dữ liệu tài nguyên được biên dịch:
- Con trỏ tài nguyên đến một mảng số nguyên.
- mã tham chiếu tài nguyên:
-
Trong Java:
R.array.integer_array_name
Trong XML:@[package:]array/integer_array_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
- phần tử:
- ví dụ:
- Tệp XML được lưu vào
res/values/integers.xml
:<?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>
Mã xử lý ứng dụng sau đây truy xuất mảng số nguyên:
Kotlin
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Java
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
Mảng đã nhập
TypedArray
được xác định trong XML. Bạn có thể sử dụng hàm này để tạo một mảng tài nguyên khác, chẳng hạn như đối tượng có thể vẽ. Mảng này không bắt buộc phải đồng nhất, vì vậy bạn có thể tạo một mảng gồm các loại tài nguyên kết hợp, nhưng hãy lưu ý đến loại dữ liệu và vị trí nằm trong mảng đó để có thể lấy đúng từng mục với phương thức get...()
của lớp TypedArray
.
Lưu ý: Mảng đã nhập là một tài nguyên đơn giản được tham chiếu bằng cách sử dụng giá trị đã cung cấp trong thuộc tính name
chứ không phải tên của tệp XML. Do đó, bạn có thể kết hợp tài nguyên mảng đã nhập với các tài nguyên đơn giản khác trong một tệp XML, bên dưới một phần tử <resources>
.
- vị trí tệp:
res/values/filename.xml
Bạn có thể tuỳ ý đặt tên tệp.name
của phần tử<array>
được dùng làm mã nhận dạng tài nguyên.- loại dữ liệu tài nguyên được biên dịch:
- Con trỏ tài nguyên đến
TypedArray
. - mã tham chiếu tài nguyên:
-
Trong Java:
R.array.array_name
Trong XML:@[package:]array/array_name
- cú pháp:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
- phần tử:
- ví dụ:
- Tệp XML được lưu vào
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>
Mã xử lý ứng dụng sau đây truy xuất từng mảng rồi nhận mục nhập đầu tiên trong từng mảng:
Kotlin
val icons: TypedArray =
resources
.obtainTypedArray
(R.array.icons) val drawable: Drawable = icons.getDrawable
(0) val colors: TypedArray =resources
.obtainTypedArray
(R.array.colors) val color: Int = colors.getColor
(0,0)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);