בדף הזה מוגדרים סוגי המשאבים הבאים שאפשר להוציא משימוש:
- בוליאני
- משאב XML עם ערך בוליאני.
- צבע
- משאב XML עם ערך צבע (צבע הקסדצימלי).
- מאפיין
- משאב XML שנושא ערך מאפיין (עם יחידת מידה).
- מזהה
- משאב XML שמספק מזהה ייחודי למשאבי אפליקציות רכיבים.
- מספר שלם
- משאב XML עם ערך מסוג מספר שלם.
- מערך מספר שלם
- משאב XML שמספק מערך של מספרים שלמים.
- מערך שהוקלד
- משאב XML שמספק
TypedArray
(אפשר להשתמש בו למערך פריטים שניתנים להזזה).
בוליאני
ערך בוליאני שמוגדר ב-XML.
הערה: ערך בוליאני הוא משאב פשוט שיש הפניה אליו.
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
למשל, אפשר לשלב משאבי בוליאני עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. ה-
name
של הרכיב<bool>
משמש כמשאב ID. - הפניה למשאבים:
-
ב-Java:
R.bool.bool_name
ב-XML:@[package:]bool/bool_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <bool name="bool_name" >[true | false]</bool> </resources>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר את הערך הבוליאני:
Kotlin
val screenIsSmall: Boolean =
resources
.getBoolean
(R.bool.screen_small)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" />
res/values/filename.xml
בצבע צבע
ערך של צבע שמוגדר ב-XML.
הצבע צוין באמצעות ערך RGB וערוץ אלפא. אפשר להשתמש במשאב צבעים
כל מקום שמקבל ערך הקסדצימלי של צבע. אפשר גם להשתמש במשאב צבע כאשר
צריך להשתמש במשאב שניתן להזזה ב-XML, למשל android:drawable="@color/green"
.
הערך מתחיל תמיד בתו פאונד (#) ואחריו מידע בצבע אלפא-אדום-ירוק-כחול באחד מהפורמטים הבאים:
- #RGB
- #ARGB
- #RGGBB
- #AARRGGBB
הערה: צבע הוא משאב פשוט שיש אליו הפניה
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
למשל, אפשר לשלב משאבי צבע עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. המאפיין
name
של הרכיב<color>
משמש למזהה המשאב של הממשק. - הפניה למשאבים:
-
ב-Java:
R.color.color_name
ב-XML:@[package:]color/color_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="color_name" >hex_color</color> </resources>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר את משאב הצבע:
Kotlin
val color: Int =
resources
.getColor
(R.color.opaque_red)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"/>
res/values/colors.xml
בצבע מאפיין
ערך מאפיין שמוגדר ב-XML. מאפיין מצוין באמצעות מספר ואחריו יחידת מידה, כמו 10px, 2in או 5sp. יחידות המידה הבאות נתמכות ב-Android:
dp
- פיקסלים שאינם תלויים בדחיסות: יחידה מופשטת המבוססת על הצפיפות הפיזית של
מסך. היחידות האלה הן ביחס למסך של 160dpi (נקודות לאינץ') שבו 1 dp שווה בערך
לפיקסל אחד. במסך בעל צפיפות גבוהה יותר, מספר הפיקסלים לשרטוט 1 dp מוגדל
לפי גורם שמתאים ל-DPI של המסך.
באופן דומה, במסך עם צפיפות נמוכה יותר, המספר מהפיקסלים שנעשה בהם שימוש ב-dp אחד מתבצעת הקטנה. היחס בין dps לפיקסלים משתנה דחיסות המסך, אבל לא בהכרח ביחס ישיר. שימוש ביחידות dp במקום ביחידות פיקסלים הוא פתרון כדי לשנות את הגודל של מידות התצוגה בפריסה שלך באופן תקין לדחיסות מסך שונה. היא מספקת עקביות לגדלים האמיתיים של רכיבי ממשק המשתמש שלך בין מכשירים.
sp
- פיקסלים שאינם תלויים בקנה מידה – דומה ליחידת ה-dp, אבל הוא גם משתנה בהתאם לגופן של המשתמש העדפות גודל. מומלץ להשתמש ביחידה הזו כשמציינים את גודלי הגופנים, כדי שהם יותאמו גם לדחיסות המסך וגם להעדפת המשתמש.
pt
- נקודות: 1/72 אינץ' על סמך הגודל הפיזי של המסך, בהנחה שיש מסך בצפיפות של 72dpi.
px
- פיקסלים: תואמים לפיקסלים שמופיעים בפועל במסך. לא מומלץ להשתמש ביחידה הזו, כי שהייצוגים בפועל עשויים להשתנות בין מכשירים. למכשירים שונים יכול להיות מספר שונה של פיקסלים לאינץ' ועשויים להופיע במסך יותר או פחות פיקסלים בסך הכול.
mm
- מילימטרים: לפי הגודל הפיזי של המסך.
in
- אינצ'ים: לפי הגודל הפיזי של המסך.
הערה: מאפיין הוא משאב פשוט שיש הפניה אליו
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
לדוגמה, אפשר לשלב משאבי מאפיינים עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. המאפיין
name
של הרכיב<dimen>
משמש למזהה המשאב של הממשק. - הפניה למשאבים:
-
ב-Java:
R.dimen.dimension_name
ב-XML:@[package:]dimen/dimension_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <dimen name="dimension_name" >dimension</dimen> </resources>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר מאפיין:
Kotlin
val fontSize: Float =
resources
.getDimension
(R.dimen.font_size)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"/>
res/values/filename.xml
בצבע מזהה
מזהה משאב ייחודי שמוגדר ב-XML. שימוש בשם שסיפקת ב<item>
הכלים למפתחים של Android יוצרים מספר שלם ייחודי במחלקה R.java
של הפרויקט, ואפשר להשתמש בו
מזהה למשאבים של אפליקציות, כמו View
בפריסת ממשק המשתמש,
או מספר שלם ייחודי לשימוש בקוד האפליקציה, כמו מזהה בתיבת דו-שיח
של התוצאה.
הערה: מזהה הוא משאב פשוט שיש אליו הפניה
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
למשל, אפשר לשלב משאבי מזהים עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד. כמו כן, משאב מזהה לא מפנה
פריט משאב בפועל: הוא מזהה ייחודי שאפשר לצרף למשאבים אחרים או להשתמש בו
כמספר שלם ייחודי באפליקציה.
- מיקום הקובץ:
- שם הקובץ שרירותי.
- הפניה למשאבים:
-
ב-Java:
R.id.name
ב-XML:@[package:]id/name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <item type="id" name="id_name" /> </resources>
- רכיבים:
- דוגמא:
-
קובץ ה-XML נשמר ב-
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>
קטע הקוד הבא של הפריסה משתמש במזהה
"button_ok"
לווידג'טButton
:<Button android:id="@id/button_ok" style="@style/button_style" />
הערך
android:id
כאן לא כולל את סימן הפלוס בהפניה למזהה, כי המזהה כבר קיים, כמו שהוגדר בדוגמה הקודמת ל-ids.xml
. כשמציינים מזהה למשאב XML באמצעות סימן הפלוס, בפורמטandroid:id="@+id/name"
, המשמעות היא שהמזהה"name"
עדיין לא קיים והוא נוצר.דוגמה נוספת: קטע הקוד הבא משתמש במזהה
"dialog_exit"
בתור מזהה ייחודי לתיבת דו-שיח:Kotlin
showDialog
(R.id.dialog_exit)Java
showDialog
(R.id.dialog_exit);באותה אפליקציה, משווים את המזהה
"dialog_exit"
כשיוצרים תיבת דו-שיח: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; }
res/values/filename.xml
בצבע מספר שלם
מספר שלם שמוגדר ב-XML.
הערה: מספר שלם הוא משאב פשוט שיש הפניה אליו
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
למשל, אפשר לשלב משאבים של מספרים שלמים עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. המאפיין
name
של הרכיב<integer>
משמש למזהה המשאב של הממשק. - הפניה למשאבים:
-
ב-Java:
R.integer.integer_name
ב-XML:@[package:]integer/integer_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer name="integer_name" >integer</integer> </resources>
- רכיבים:
- דוגמא:
-
קובץ ה-XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר מספר שלם:
Kotlin
val maxSpeed: Int =
resources
.getInteger
(R.integer.max_speed)Java
Resources res =
getResources()
; int maxSpeed = res.getInteger
(R.integer.max_speed);
res/values/filename.xml
בצבע מערך מספר שלם
מערך של מספרים שלמים שמוגדרים ב-XML.
הערה: מערך מספרים שלמים הוא משאב פשוט שיש אליו הפניה
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
אפשר לשלב משאבים של מערך עם מספרים שלמים עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. המאפיין
name
של הרכיב<integer-array>
משמש למזהה המשאב של הממשק. - סוג נתונים של משאב מקומפל:
- סמן המשאב למערך של מספרים שלמים.
- הפניה למשאבים:
-
ב-Java:
R.array.integer_array_name
ב-XML:@[package:]array/integer_array_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <integer-array name="integer_array_name"> <item >integer</item> </integer-array> </resources>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר את מערך המספרים השלמים:
Kotlin
val bits: IntArray =
resources
.getIntArray
(R.array.bits)Java
Resources res =
getResources()
; int[] bits = res.getIntArray
(R.array.bits);
res/values/filename.xml
בצבע מערך שהוקלד
TypedArray
שמוגדר ב-XML. אפשר להשתמש
כדי ליצור מערך של משאבים אחרים כמו משאבים שניתנים להזזה. המערך לא חייב להיות הומוגני, כך שאפשר ליצור מערך של סוגי משאבים מעורבים,
צריך לדעת מהם סוגי הנתונים והמיקום שלהם במערך, כדי שתוכלו לקבל
כל פריט עם השיטות get...()
של הכיתה TypedArray
.
הערה: מערך שהוקלד הוא משאב פשוט שיש אליו הפניה
באמצעות הערך שצוין במאפיין name
, ולא בשם של קובץ ה-XML. בתור
למשל, אפשר לשלב משאבי מערך מסוגננים עם משאבים פשוטים אחרים בקובץ XML אחד,
תחת רכיב <resources>
אחד.
- מיקום הקובץ:
-
שם הקובץ שרירותי. המאפיין
name
של הרכיב<array>
משמש למזהה המשאב של הממשק. - סוג נתונים של משאב מקומפל:
- מצביע המשאב אל
TypedArray
. - הפניה למשאבים:
-
ב-Java:
R.array.array_name
ב-XML:@[package:]array/array_name
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <resources> <array name="integer_array_name"> <item>resource</item> </array> </resources>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
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>
קוד האפליקציה הבא מאחזר כל מערך ולאחר מכן מקבל את הערך הראשון בכל מערך:
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);
res/values/filename.xml
בצבע