Trang này xác định nhiều loại tài nguyên hơn mà bạn có ngoại hoá, bao gồm:
- 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
(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>
sẽ đượ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 này sẽ 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 nà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 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 tệp XML (ví dụ: 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-Đỏ-Xanh lục-Xanh lam ở 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>
sẽ đượ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 này sẽ 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);Tệp XML bố cục nà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"/>
Thứ nguyên
Một giá trị thứ nguyên được xác định trong tệp XML. Thứ nguyên được chỉ định bằng một số theo sau là đơn vị đo lường. Ví dụ: 10 px, 2 inch, 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 đó 1dp gần bằng với 1px. Khi chạy trên màn hình có mật độ điểm ảnh cao hơn, số pixel được dùng để vẽ 1dp 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 1dp sẽ được giảm xuống. Tỷ lệ dp trên pixel sẽ thay đổi theo mật độ 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 đơn giản để làm cho các kích thước của chế độ xem trong bố cục thay đổi theo kích thước phù hợp với nhiều mật độ màn hình khác nhau. Nói cách khác, tính năng này cung cấp tính nhất quán cho kích thước thực của các thành phần trong giao diện người dùng trên 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 tuỳ chọn kích thước phông chữ của người dùng. 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 cho 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à 72dpi.
px
- Pixel – Tương ứng với các pixel thực tế trên màn hình. Bạn không nên sử dụng đơn vị đo lường này vì cách thể hiện thực tế trên các thiết bị có thể khác nhau; các thiết bị khác nhau có thể có số pixel trên mỗi inch khác nhau, và có thể có nhiều hơn hoặc ít hơn tổng số pixel có sẵ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 ý: Thứ 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 thứ 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ử<dimen>
sẽ đượ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 này sẽ truy xuất một thứ nguyên:
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 này áp dụng thứ nguyên 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 định nghĩa 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 (ví dụ: 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 (ví dụ: làm 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, hãy nhớ rằng 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ế; nó chỉ 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>
Sau đó, đoạn mã bố cục này sử dụng mã nhận dạng "button_ok" cho tiện ích Nút:
<Button android:id="@id/button_ok" style="@style/button_style" />
Lưu ý là giá trị
android:id
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ư định nghĩa trong ví dụids.xml
ở trên. (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"
—điều đó có nghĩa là mã nhận dạng "tên" không tồn tại và bạn cần tạo mã này.)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>
sẽ đượ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 này sẽ 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
(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>
sẽ đượ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 này sẽ 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ẽ. Lưu ý là 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 các loại tài nguyên hỗn hợp, nhưng bạn phải biết các loại dữ liệu và vị trí nằm trong mảng đó để có thể lấy đúng từng mục bằng phương thức get...()
của 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
(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>
sẽ đượ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 này truy xuất từng mảng và sau đó lấy mục nhập đầu tiên trong mỗi 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);