Friday, June 21, 2013

תכנות לאנדרואיד בקלות פרק - 7 שימוש ב Resources

בפרק זה אנו נראה כיצד ניתן להשתמש ב Resources, גם כאלה שאנחנו מוסיפים לפרוייקט (strings,images,sounds..) וגם כאלה שבאים מוכנים ב SDK של Android.
כעת נראה דוגמא קצרה שתמחיש לנו את השימוש ב Resources ולאחר מכן ננתח אותה.
דוגמת קוד:

Resources res = getResources();
String name = res.getString(R.string.app_name);
Log.i("test",name);

ה Class Resources בעצם מייצג את ה Resources של האפליקצייה, והמתודה getResources() הינה מתודה של Activity שמספק לנו חבילה של ה Resources בתצורת key-value אשר מכילה סוג של Dictionary אשר מכיל את ה Resources של הפרוייקט.
על מנת לחלץ איזשהו ערך מתוך ה resources אנו דוגמים את res באמצעות ה key המתאים, בדוגמא שלנו אני מחפש לקבל את שם האפליקציה כפי שהוגדרה בקובץ res/values/string.xml.
הkey של הערך אותו אני צריך הינו app_name וכך אני בעצם יודע מה לבקש.
בסופו של דבר אני כותב את הערך שחילצתי לLog על מנת לבדוק מה קיבלתי (נדבר על ה Log בפרק X)
דוגמא נוספת:
Drawable drawable = res.getDrawable(R.drawable.ic_launcher);
String minHeight = String.valueOf(drawable.getMinimumHeight());
Log.i("drawable",minHeight);
בדוגמא זו אנו בעצם מחלצים משתנה מסוג Drawable ע"י
 res.getDrawable(R.drawable.ic_launcher)
בעצם מתוך תיקיית/יות ה Drawable של האפליקציה המכילה תמונות / חומרים גראפיים שונים (במקרה שלנו מדובר ב icon של האפליקציה)
כמו כן אנו מחלצים למשתנה minHeight את הגובה של ה Drawable ולאחר מכן כותבים אותו ל Log עם ה key שנקרא "Drawable"
נבחן את קובץ ה res/values/string.xml
<resources>
<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>
אנו רואים שקובץ ה XML מכיל תגית פותחת וסוגרת של resources, וביניהן רשימה של ערכים
כל ערך בנוי מתגית string עם key שנקרא name כאשר ה value נמצא בין התגית הפותחת והסוגרת.
לדוגמא, ה key הינו hello_world וה value הינו “Hello world!”
מכיוון ש drawables אינם בעלי ייצוג string-י אין קובץ מסודר שמכיל אותם אלא הid שלהם הוא שם קובץ התמונה.
Resources נוספים שאנחנו יכולים ליצור על מנת לסייע לנו בפרוייקט:
String array
Int array
Color
בואו נראה דוגמא קצרה:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
<integer-array name="bits">
<item>4</item>
<item>8</item>
<item>16</item>
<item>32</item>
</integer-array>
<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>