משאב ניתן לשרטוט הוא קונספט כללי לגרפיקה שניתן לצייר למסך ו
אפשר לאחזר באמצעות ממשקי API כמו getDrawable(int)
, או להחיל
למשאב XML אחר עם מאפיינים כמו android:drawable
ו-android:icon
.
יש כמה סוגים של פריטים גרפיים:
- קובץ מפת סיביות (Bitmap)
- קובץ גרפי של מפת סיביות (PNG , WEBP , JPG או GIF).
ייווצר
BitmapDrawable
. - קובץ תשעה תיקונים
- קובץ PNG עם אזורים שאפשר למתוח, שמאפשר לשנות גודל של תמונות על סמך התוכן (
.9.png
). הפונקציה יוצרתNinePatchDrawable
. - רשימת שכבות
- מכשיר שניתן להזזה שמנהל מערך של פריטים שניתן להזזה. הם משורטטים לפי סדר מערך, כך
עם האינדקס הגדול ביותר מצויר למעלה. ייווצר
LayerDrawable
. - רשימת מדינות
- קובץ XML שמפנה לגרפיקה שונה של מפת סיביות (bitmap)
למצבים שונים - לדוגמה, להשתמש בתמונה שונה כשמקישים על לחצן.
ייווצר
StateListDrawable
. - רשימת רמות
- קובץ XML שמגדיר פריט שניתן להזזה שמנהל מספר פריטים ניתנים להזזה, כל אחד מהם
לפרמטר הוקצה ערך מספרי מקסימלי. ייווצר
LevelListDrawable
. - כלי מעבר שניתן להזזה
- קובץ XML שמגדיר פריט גרפי שניתן להזזה עם אפשרות עמעום הדרגתי בין שני משאבים שניתנים להזזה.
ייווצר
TransitionDrawable
. - פריט שניתן להזזה
- קובץ XML שמגדיר פריט גרפי שניתן להזזה שמציב פריט אחר שניתן להזזה לפי מרחק שצוין. האפשרות הזו שימושית כשצריך להשתמש בתמונה שניתן להזזה לרקע הקטן מהרקע של התצוגה גבולות.
- ניתן לצייר עם תופסן
- קובץ XML שמגדיר פריט גרפי שניתן להזזה שמדביק פריט אחר שניתן להזזה על סמך
ערך הרמה הנוכחית. ייווצר
ClipDrawable
. - שינוי קנה מידה של פריט גרפי
- קובץ XML שמגדיר פריט גרפי שניתן להזזה שמשנה את הגודל של פריט גרפי אחר להזזה על סמך
ערך הרמה הנוכחית. יצירת
ScaleDrawable
- צורה שניתן לצייר.
- קובץ XML שמגדיר צורה גיאומטרית, כולל צבעים ומעברים הדרגתיים.
ייווצר
GradientDrawable
.
לקבלת מידע על
יוצרים AnimationDrawable
,
אפשר לעיין במסמך משאבי אנימציה.
הערה: אפשר גם להגדיר משאב צבע
משמש כרכיב שניתן לשרטוט ב-XML. לדוגמה, כשיוצרים רשימת מדינות
שניתן להזזה, אפשר להפנות למשאב צבעים עבור המאפיין android:drawable
(android:drawable="@color/green"
).
מפת סיביות (bitmap)
תמונה של מפת סיביות (bitmap). Android תומך בקובצי מפת סיביות (bitmap) בפורמטים הבאים: PNG (מועדף), WEBP (מועדף, נדרש API ברמה 17 ומעלה), JPG (קביל), GIF (לא מומלץ).
אתם יכולים להפנות ישירות לקובץ מפת סיביות (bitmap) ולהשתמש בשם הקובץ כמזהה המשאב, או ליצור מזהה משאב חלופי ב-XML.
הערה: קובצי מפת סיביות (Bitmap) עשויים לעבור אופטימיזציה באופן אוטומטי ללא אובדן מידע
דחיסת תמונות על ידי הכלי aapt
במהלך תהליך ה-build. עבור
לדוגמה, קובץ PNG בצבע אמיתי שלא דורש יותר מ-256 צבעים עשוי להיות מומר ל-8 ביט
קובץ PNG עם לוח צבעים. התוצאה היא תמונה באיכות זהה שדורשת פחות
זיכרון.
לכן, חשוב לשים לב שהקבצים הבינאריים של התמונות המוצבים בספרייה הזו עשויים להשתנות במהלך ה-build. אם המיקום
אתם מתכננים לקרוא תמונה בתור זרם קצר כדי להמיר אותה למפת סיביות (bitmap),
במקום זאת, את התיקייה res/raw/
, שבה לא בוצעה אופטימיזציה שלהן.
קובץ מפת סיביות (bitmap)
קובץ מפת סיביות (bitmap) הוא קובץ PNG, WEBP, JPG או GIF. מערכת Android יוצרת Drawable
עבור כל אחד מהקבצים האלה כששומרים אותם בספרייה res/drawable/
.
- מיקום הקובץ:
res/drawable/filename.png
(.png
,.webp
,.jpg
או.gif
)
שם הקובץ הוא מזהה המשאב- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
BitmapDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- דוגמא:
- עם תמונה ששמורה ב-
res/drawable/myimage.png
, הפריסה הזו של XML חלה את התמונה לתצוגה:<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/myimage" />
קוד האפליקציה הבא מאחזר את התמונה בתור
Drawable
:Kotlin
val drawable: Drawable? = ResourcesCompat.
getDrawable
(resources, R.drawable.myimage, null)Java
Resources res =
getResources()
; Drawable drawable = ResourcesCompat.getDrawable
(res, R.drawable.myimage, null); - למידע נוסף:
מפת סיביות (bitmap) של XML
מפת סיביות של XML היא משאב שמוגדר ב-XML שמפנה לקובץ מפת סיביות (bitmap). האפקט הוא כינוי של קובץ RAW של מפת סיביות (bitmap). ה-XML יכול לציין מאפיינים נוספים למפת הסיביות, כמו שילוב צבעים ואריחים.
הערה: אפשר להשתמש ברכיב <bitmap>
כצאצא של
רכיב <item>
. עבור
לדוגמה, כשיוצרים רשימת מצבים או רשימת שכבות,
אפשר להחריג את android:drawable
מרכיב <item>
ומציבים בתוכו <bitmap>
שמגדיר את הפריט שניתן להזזה.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
BitmapDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:mipMap=["true" | "false"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
- רכיבים:
- דוגמא:
-
<?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/icon" android:tileMode="repeat" />
- למידע נוסף:
res/drawable/filename.xml
בצבע תשעה תיקונים
NinePatch
הוא תמונה בפורמט PNG שבה אפשר להגדיר אזורים שאפשר להרחיב
ש-Android מדרג את הגודל כשהתוכן בתצוגה חורג מגבולות התמונה הרגילים. שלך
בדרך כלל מקצים את סוג התמונה הזה כרקע של תצוגה שיש בה לפחות קבוצת מאפיינים אחת
אל "wrap_content"
.
כשהתצוגה גדלה כדי להתאים לתוכן, התמונה עם תשעה התיקונים
מותאם גם לגודל התצוגה. שימוש לדוגמה בתמונה עם תשעה תיקונים הוא
רקע המשמש את הווידג'ט הרגיל של Android Button
, שחייב להימתח אל
להכיל את הטקסט (או התמונה) שבתוך הלחצן.
בדומה למפת סיביות רגילה, אפשר להפנות ישירות לקובץ תשעה תיקונים או ממשאב שמוגדר באמצעות XML.
לדיון מלא על יצירת קובץ תשעה תיקונים עם אזורים שאפשר למתוח, כדאי לעיין במאמר בנושא יצירת מפות סיביות (bitmaps) שניתן לשנות את הגודל שלהן (קובצי 9-patch).
קובץ תשעה תיקונים
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
NinePatchDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- דוגמא:
- באמצעות תמונה שנשמרה ב-
res/drawable/myninepatch.9.png
, הפריסה הזו בפורמט XML מחיל את תשעה התיקונים על תצוגה מפורטת:<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/myninepatch" />
- למידע נוסף:
res/drawable/filename.9.png
בצבע תשעה תיקונים בפורמט XML
תיקון XML תשעה הוא משאב שמוגדר ב-XML שמצביע אל קובץ תשעה תיקונים. קובץ ה-XML יכול הגדרת המיזוג של התמונה.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
NinePatchDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:dither=["true" | "false"] />
- רכיבים:
- דוגמא:
-
<?xml version="1.0" encoding="utf-8"?> <nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/myninepatch" android:dither="false" />
res/drawable/filename.xml
בצבע רשימת שכבות
LayerDrawable
הוא אובייקט שניתן להזזה
שמנהלת מערך של רכיבים גרפיים אחרים. כל פריט שניתן להזזה ברשימה משורטט לפי הסדר
חדשה. הפריט האחרון ברשימה משורטט למעלה.
כל פריט גרפי שניתן להזזה מיוצג על ידי רכיב <item>
בתוך רכיב <layer-list>
יחיד.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
LayerDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </layer-list>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
res/drawable/layers.xml
:<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/android_red" android:gravity="center" /> </item> <item android:top="10dp" android:left="10dp"> <bitmap android:src="@drawable/android_green" android:gravity="center" /> </item> <item android:top="20dp" android:left="20dp"> <bitmap android:src="@drawable/android_blue" android:gravity="center" /> </item> </layer-list>
בדוגמה הזו נעשה שימוש ברכיב
<bitmap>
בתוך רכיב כדי להגדיר את פריט הגרפיקה לכל פריט עם כוח המשיכה"center"
. כך אפשר לוודא שאף אחת מהתמונות לא תשתנה להתאים לגודל המכל, בגלל שינוי הגודל שנגרם על ידי תמונות ההיסט.קובץ ה-XML של הפריסה מחיל את הפריט הניתן להזזה על תצוגה:
<ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/layers" />
התוצאה היא מקבץ של תמונות שההיסט שלו הולך וגדל:
- למידע נוסף:
res/drawable/filename.xml
בצבע רשימת מדינות
StateListDrawable
הוא אובייקט שניתן לשרטוט ומוגדר ב-XML.
שמשתמש בכמה תמונות כדי לייצג את אותה גרפיקה, בהתאם למצב
של האובייקט. לדוגמה, ניתן להקיש על המצב של הווידג'ט Button
, להתמקד בו,
או אף אחד מהם; באמצעות רשימת מצבים שניתן לצייר, אפשר לספק תמונת רקע שונה לכל אחד מהם
.
עליכם לתאר את רשימת המצבים בקובץ XML. כל פריט גרפיקה מיוצג על ידי רכיב <item>
בתוך רכיב <selector>
יחיד. בכל <item>
משתמשת במאפיינים שונים כדי לתאר את המצב שבו היא משמשת בתור הגרפיקה של
פריט גרפי שניתן להזזה.
במהלך כל שינוי מצב, עוברים מעל רשימת המצבים מלמעלה למטה, יחד עם הפריט הראשון תואם למצב הנוכחי שבו נעשה שימוש. הבחירה לא מבוססת על Match, " אלא הפריט הראשון שעומד בקריטריונים המינימליים של המדינה.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
StateListDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" android:constantSize=["true" | "false"] android:dither=["true" | "false"] android:variablePadding=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_hovered=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_activated=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
res/drawable/button.xml
:<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector>
קובץ ה-XML של הפריסה מחיל את רשימת המצבים שניתן לצייר על לחצן:
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="@drawable/button" />
- למידע נוסף:
res/drawable/filename.xml
בצבע רשימת רמות
פריט גרפי שניתן להזזה שמנהל כמה פריטים גרפיים חלופיים, שלכל אחד מהם מוקצה ערך מספרי מקסימלי
עם ערך מסוים. הגדרת ערך הרמה של הפריט הניתן להזזה באמצעות setLevel()
טוענת את המשאב שניתן להזזה
רשימה של רמות עם ערך android:maxLevel
שגדול מהערך או שווה לו
מועברים ל-method.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
LevelListDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/drawable_resource" android:maxLevel="integer" android:minLevel="integer" /> </level-list>
- רכיבים:
- דוגמא:
-
<?xml version="1.0" encoding="utf-8"?> <level-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@drawable/status_off" android:maxLevel="0" /> <item android:drawable="@drawable/status_on" android:maxLevel="1" /> </level-list>
אחרי החלת ההגדרה הזו על
View
, אפשר לשנות את הרמה באמצעותsetLevel()
אוsetImageLevel()
. - למידע נוסף:
res/drawable/filename.xml
בצבע ניתן להזזה עם מעבר
TransitionDrawable
הוא אובייקט שניתן להזזה
שיכולה להפוך לשקוף בהדרגה בין שני משאבים ניתנים להזזה אחרים.
כל פריט גרפי שניתן להזזה מיוצג על ידי רכיב <item>
בתוך רכיב <transition>
יחיד. אפשר להוסיף עד שני פריטים. כדי לעבור קדימה, יש להתקשר
startTransition()
שפת תרגום
לחזור אחורה, להתקשר אל reverseTransition()
.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
TransitionDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@[package:]drawable/drawable_resource" android:id="@[+][package:]id/resource_name" android:top="dimension" android:right="dimension" android:bottom="dimension" android:left="dimension" /> </transition>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
res/drawable/transition.xml
:<?xml version="1.0" encoding="utf-8"?> <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/on" /> <item android:drawable="@drawable/off" /> </transition>
קובץ ה-XML של הפריסה מחיל את הפריט הניתן להזזה על תצוגה:
<ImageButton android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/transition" />
והקוד הבא מבצע מעבר של 500 אלפיות השנייה מהפריט הראשון לפריט השני:
Kotlin
val button: ImageButton = findViewById(R.id.button) val drawable: Drawable = button.drawable if (drawable is TransitionDrawable) { drawable.startTransition(500) }
Java
ImageButton button = (ImageButton) findViewById(R.id.button); Drawable drawable = button.getDrawable(); if (drawable instanceof TransitionDrawable) { ((TransitionDrawable) drawable).startTransition(500); }
- למידע נוסף:
res/drawable/filename.xml
בצבע ניתנת להזזה עם קיבוע
פריט גרפי שניתן להזזה שמוגדר ב-XML שמטמיע פריט אחר שניתן להזזה לפי מרחק שצוין. זה מועיל כאשר תצוגה זקוקה לרקע הקטן מהגבולות בפועל של התצוגה.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
InsetDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:insetTop="dimension" android:insetRight="dimension" android:insetBottom="dimension" android:insetLeft="dimension" />
- רכיבים:
- דוגמא:
-
<?xml version="1.0" encoding="utf-8"?> <inset xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/background" android:insetTop="10dp" android:insetLeft="10dp" />
- למידע נוסף:
res/drawable/filename.xml
בצבע ניתן להזזה עם תופס
פריט גרפי שניתן להזזה שמוגדר ב-XML מחלק את התוכן של פריט גרפי אחר להזזה על סמך הרמה הנוכחית של הפריט הגרפי הזה. שלך הוא יכול לקבוע כמה רוחב וגובה של הילד או הילדה ייחתכו בהתאם למפלס, וכן כמו כוח משיכה כדי לשלוט במקום שבו הוא ממוקם במכל הכולל שלו. לרוב משמש להטמעה דברים כמו סרגלי התקדמות.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
ClipDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:clipOrientation=["horizontal" | "vertical"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] />
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
res/drawable/clip.xml
:<?xml version="1.0" encoding="utf-8"?> <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/android" android:clipOrientation="horizontal" android:gravity="left" />
קוד ה-XML של הפריסה הבא מחיל את הקליפ שניתן להזזה על תצוגה:
<ImageView android:id="@+id/image" android:src="@drawable/clip" android:layout_height="wrap_content" android:layout_width="wrap_content" />
הקוד הבא מקבל את הפריט שניתן להזזה ומגדיל את כמות החיתוך לחשוף את התמונה בהדרגה:
Kotlin
val imageview: ImageView = findViewById(R.id.image) val drawable: Drawable = imageview.background if (drawable is ClipDrawable) { drawable.level = drawable.level + 1000 }
Java
ImageView imageview = (ImageView) findViewById(R.id.image); Drawable drawable = imageview.getBackground(); if (drawable instanceof ClipDrawable) { ((ClipDrawable)drawable).setLevel(drawable.getLevel() + 1000); }
הגדלת הרמה מפחיתה את כמות החיתוך וחושפת את התמונה לאט. כאן זה ברמה של 7000:
הערה: רמת ברירת המחדל היא 0, והיא נחתכה במלואה כך שהתמונה לא גלוי. כשהרמה היא 10,000, התמונה לא נחתכה וניתן לראות אותה במלואה.
- למידע נוסף:
res/drawable/filename.xml
בצבע התאמה לעומס (scaling)
פריט גרפי שניתן להזזה שמוגדר ב-XML שמשנה את הגודל של פריט גרפי אחר שניתן להזזה על סמך הגודל הנוכחי שלו ברמה.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
ScaleDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/drawable_resource" android:scaleGravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:scaleHeight="percentage" android:scaleWidth="percentage" />
- רכיבים:
- דוגמא:
-
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/logo" android:scaleGravity="center_vertical|center_horizontal" android:scaleHeight="80%" android:scaleWidth="80%" />
- למידע נוסף:
res/drawable/filename.xml
בצבע צורה שניתן לצייר
זוהי צורה גנרית שמוגדרת ב-XML.
- מיקום הקובץ:
- שם הקובץ הוא מזהה המשאב
- סוג נתונים של משאב מקומפל:
- מצביע משאב ל
GradientDrawable
- הפניה למשאבים:
-
ב-Java:
R.drawable.filename
ב-XML:@[package:]drawable/filename
- תחביר:
-
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="float" android:centerY="float" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
- רכיבים:
- דוגמא:
- קובץ XML נשמר ב-
res/drawable/gradient_box.xml
:<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF00FF" android:angle="45"/> <padding android:left="7dp" android:top="7dp" android:right="7dp" android:bottom="7dp" /> <corners android:radius="8dp" /> </shape>
קובץ ה-XML של הפריסה מחיל את הצורה הניתנת להזזה על תצוגה:
<TextView android:background="@drawable/gradient_box" android:layout_height="wrap_content" android:layout_width="wrap_content" />
קוד האפליקציה הזה מקבל את הצורה שניתן לצייר ומחיל אותה על תצוגה:
Kotlin
val shape: Drawable? =
getDrawable
(resources
, R.drawable.gradient_box,getTheme()
) val tv: TextView = findViewById(R.id.textview) tv.background = shapeJava
Resources res =
getResources()
; Drawable shape = ResourcesCompat.getDrawable
(res, R.drawable.gradient_box,getTheme()
); TextView tv = (TextView)findViewById(R.id.textview); tv.setBackground(shape); - למידע נוסף:
res/drawable/filename.xml
בצבע