PracticU

Styling

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Styling
מילון מושגים:
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
View - רכיב שאחראי על הצגת המידע למשתמש (התצוגה) בדפוס MVC. גם טבלה וירטואלית מבוססת שאילתה במסד נתונים.
מחרוזת - סוג נתונים שמייצג רצף של תווים, כלומר טקסט, ומשמש לאחסון מילים, משפטים או כל רצף סימנים.
Android - מערכת הפעלה מבוססת Linux לטלפונים ולמכשירים ניידים, שפותחה על ידי גוגל.

Styling
כשכמה רכיבים חולקים אותו עיצוב, ההגדרות חוזרות על עצמן בכל רכיב, ושינוי אחד דורש תיקון בכל מקום. ההרצאה מראה שני שלבים להסרת הכפילות: העברת הערכים לקובצי משאבים, ואז הגדרת style בקובץ styles.xml.
הדוגמה
נבנה layout עם שני TextView (מרג'ין 3dp, גודל 30sp, bold, צבע בורדו) ושלושה EditText (מרג'ין 7dp, אותו גודל וגם bold, צבע טקסט כחול כהה, רקע צהבהב ו-hint). הערכים חוזרים בכל הרכיבים.
הצעדים
1. ערכים לקובץ dimens.xml: נוצרו layout_padding (16dp), text_view_margin (3dp), any_text_size (30sp) ו-edit_text_margin (7dp), והורקו בכל מקום. שינוי עתידי, למשל ל-20, משפיע על הכל. עדיף להגדיר את הערך בקובץ המשאבים מיד, ולא לכתוב hardcoded ואז להחליף.
2. צבעים ל-colors.xml: text_view_text_color, edit_text_text_color ו-edit_text_back_color.
3. מחרוזות: Alt+Enter ו-Extract string resource עבור הטקסטים וה-hints.
4. הגדרת style: ב-styles.xml יוצרים style עם name (בדוגמה TextViewStyle) ובתוכו item לכל תכונה משותפת, כשה-name הוא התכונה כולל android:. רק מה שמשותף לכל הרכיבים נכנס לסגנון. מה שלא משותף, כמו gravity או text, נשאר ברכיב.
5. שימוש: ברכיב כותבים style="@style/TextViewStyle" (בלי android:). אותו דבר נעשה ל-EditTextStyle.
6. ירושה: תכונות משותפות לשני הסגנונות (כמו רוחב, גובה, bold וגודל טקסט) עוברות לסגנון בסיס, BaseTextStyle. הסגנונות האחרים יורשים ממנו דרך parent.
7. style ל-layout: גם ל-LinearLayout נוצר סגנון, LayoutStyle, עם match_parent לרוחב ולגובה ו-padding. ה-orientation לא נכנס כי הוא ספציפי ל-LinearLayout.
שימו לב
- הרכיב עדיין יכול לדרוס ערך מהסגנון, אבל עדיף לשים בסגנון רק מה שבאמת משותף.
- בסוף קובץ ה-layout נקי (clean code) ורק מציין את הסגנון, וכל העיצוב כתוב במקום אחד.
אחרי ההרצאה אפשר להוציא עיצוב משותף לסגנונות, לבנות סגנון בסיס ולרשת ממנו.
השיעור הבא בקורס: Themes

פרקי ההרצאה: Styling

  1. 00:00

    מניעת שכפול קוד בעיצוב

  2. 00:39

    בניית TextView מעוצב

  3. 02:12

    עיצוב תיבות EditText

  4. 03:54

    הבעיה בעיצוב משוכפל

  5. 05:29

    העברת מידות לקובץ dimens

  6. 09:17

    הגדרת צבעים בקובץ colors

  7. 12:11

    חילוץ מחרוזות ל-strings.xml

  8. 13:01

    מבוא לקובץ Styles

תמלול ההרצאה: Styling

הטקסט המלא של הדקות הראשונות בהרצאה «Styling» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    כאשר אנחנו כותבים קוד בין אם זה קוד ב-Java או בין אם זה קוד ב-XML חשוב לא לשכפל קוד וכמה שניתן לכתוב קוד פעם אחת. כאשר אנחנו מעצבים את האפליקציה שלנו אז קורה הרבה שחלקי צוב משוכפלים בין הרכיבים השונים.

  2. 00:23

    מה שאנחנו הולכים לראות בסרטון הזה זה איך אנחנו יכולים למנוע את השכפולים האלה בעזרת מנגנון build-in שקיים באנדרואיד שנקרא Styles. אז בואו ראשית נבנה קטע קטן מבחינת xml עם העיצובים ולאחר מכן נראה איך אנחנו יכולים לחסוך את השכפולים שהולכים להיות כאן.

  3. 00:46

    דבר ראשון בואו נבנה טקסט view נגדיר לו wrap content נוסיף לו margin נניח 3dp נגדיר לו טקסט size 30sp נגדיר לו טקסט style bold ונגדיר לו טקסט color כלשהו.

  4. 01:14

    בואו נבחר איזה מרון כזה בורדו בואו נגדיר שהטקסט שלו זה welcome ובואו ניתן לו גם הגדרה של gravity או layout gravity center horizontal לצורך כך בואו נגדיר את זה כ-match parent ואז נוכל להשתמש ב-gravity בואו נבצע עוד אחד ונגדיר שהטקסט שלו זה enter your details נוריד את ה-center

  5. 02:03

    הוריזונטל נשנה את זה לאוריינטיישן ורטיקל שהם יהיו אחד מתחת לשני ויש לנו בצורה כזאת את שני הטקסט view. העיצוב הבא שאנחנו רוצים או ליתר דיוק הרכיב הבא שאנחנו רוצים להוסיף זה רכיב אדיט טקסט.

  6. 02:28

    אני בכוונה רוצה שיהיה לי פה מספר רכיבים שנראה אחר כך איך אפשר לקחת את כל העיצובים המשוכפלים האלה ולגרום להם להיות במקום אחד. יש לנו match parent ו-wrap content כ-width ו-height.

  7. 02:45

    נגדיר מרג'ין, הפעם בואו ניתן משהו שונה, שבע dp. ניקח את אותו טקסט סייז וגם זה יהיה בולד. נגדיר טקסט קולור אחר, בואו ניקח איזה סוג של כחול כהה כזה וגם background color אבל סוג של יותר צהוב, משהו שמתאים יותר לתיבות טקסט.

  8. 03:26

    כעת בואו נגדיר hint first name ונשכפל את התיבה הזאת לתיבה נוספת שהפעם אנחנו רוצים last name ואפילו city כתיבה מספר 3. וכעת סיימנו את העיצוב וכמובן אנחנו יכולים לראות שיש פה המון דברים שפשוט משוכפלים.

  9. 04:02

    עכשיו ומסך אחד יכול להיות לנו עוד הרבה מסכים באפליקציה שבהמשך נראה כמובן איך בונים מסכים שונים ובמסכים אחרים גם כן יש את הרכיבים הוויזואליים האלה, יש טקסט view ויש אדי טקסט ובוא נניח שאנחנו רוצים את אותם צבעים כצבע אחיד לגבי כל הטקסט view ואת אותם צבעים כצבעים אחידים לגבי

  10. 04:24

    האדי טקסט בשביל שלא יהיה דברים קצת מוזרים ושונים. זה הצבעים שאנחנו רוצים וכמובן גם תכונות אחרות כמו כל האדי טקסט הם bold ואנחנו רוצים את אותו טקסט סייז לכולם וכדומה.

  11. 04:40

    אז אנחנו רואים כמובן ששינינו את כל הדברים האלה ומה קורה אם יום בהיר אחד אנחנו רוצים לשנות איזה משהו. אז כמובן אנחנו צריכים ללכת לכל אחד ולשנות בנפרד.

  12. 04:52

    אז דבר ראשון שלמדנו בעבר זה שקודם כל חשוב להעתיק את כל הגדלים מכרוזות וצבעים ולשים אותם בקבצי resource מתאימים, זה הדבר הראשון שלמדנו. אז בואו קודם כל נעשה את זה ואחר כך נראה מה עוד חשוב לבצע בשביל שגם אפילו שאנחנו עושים את זה לא יהיו שכפולים נוספים.

  13. 05:20

    אז דבר ראשון בואו נתחיל להשתמש בכל ה-Dimensions. ניגש לקובץ ה-Dimensions, אני רואה כבר שיש לי כאן עוד אחד שקשור ל-Width 820 dp, אפשר להיפטר ממנו בשביל שיהיה יותר סימפל כרגע, אז בואו ניגש Viewing Explorer ופשוט ניפטר מזה רק בשביל שיהיה דוגמה פשוטה.

  14. 05:47

    נבצע delete, נחזור בחזרה ויש לנו סך הכל קובץ dimensions אחד, כמובן שאם אנחנו רוצים קבצים שמתאימים לדברים נוספים אז אנחנו יכולים להוסיף.

  15. 06:01

    אוקיי, אז מה אנחנו רוצים להוסיף כאן ב-dimensions? אז דבר ראשון בואו נתחיל לראות איזה שימושים ב-dimensions יש לנו. הדבר הראשון שאנחנו רואים פה זה ה-16 dp של ה-padding וזה של ה-layout.

  16. 06:18

    אז בואו נבנה דיימן ונגדיר לו layout padding, ניתן לו 16 dp ואנחנו רוצים להחליף את ה-16 dp הזה ב-true-dale-diamant-layout-padding, ככה שאם יש לנו אקטיביטיז נוספים אנחנו לא צריכים להגדיר עוד פעם את המספר הזה אלא ונמצא בקובץ ה-resource, שינוי עתידי כאן נניח ל-20 משפיע אוטומטית על כולם ויש אחידות.

  17. 06:51

    נקסט, הדבר הבא שאנחנו רואים כאן זה שיש לנו את המרג'ינג, המרג'ינג הזה זה 3dp וזה מרג'ינג עבור הטקסט view אז בואו ניגש נשכפל את זה ctrl d נגדיר טקסט view מרג'ינג ניתן לו 3dp נחזור ובמקום ה3dp הזה אנחנו יכולים לשים דיימן טקסט view מרג'ינג הנקודה היא שעכשיו אנחנו לוקחים את זה ושמים את זה בכל מקום שהשתמשנו ב-3dp עבור

  18. 07:31

    טקסט ויו מרג'ין. הנה יש לנו את זה גם כאן. הדבר הבא שאנחנו רואים זה את הטקסט סייז הזה שהוא 30sp, בואו נחזור, נשכפל קונטרול d ונסתכל רגע שה-30sp הזה בעצם נמצא גם בטקסט ויו וגם באדיטקסט, זאת אומרת החלטנו באפליקציה שלנו שכל הגדלים של הטקסטים הם 30sp.

  19. 08:02

    אז השם המתאים יהיה Any Text Size או רק Text Size כלומר גודל כלשהו של כל הטקסטים יהיה 30 SP. אז בואו ניגש לכאן נמחק את ה-30 SP הזה ונגדיר Dימן Any Text Size ואנחנו יכולים עכשיו להעתיק אותו במקום כל טקסט סייז של יחידת טקסט כלשהי הנה יש לנו את זה כאן הנה יש לנו את זה כאן הנה יש לנו את זה כאן מה הדבר הבא שיש לנו?

  20. 08:42

    הדבר הבא שאנחנו רואים כאן מבחינת dimension זה ה-7 dps הזה וזה בעצם עבור ה-text view margin כאשר אותו אנחנו יכולים לשכפל ולקרוא לזה edit text margin וזה היה 7. נחזור, נמחק, dimension, edit text margin.

  21. 09:10

    נעתיק, נדביק במקום ה-7 הזה ובמקום ה-7 הזה. עכשיו שימו לב שכשבניתי את כל הלייאוט הזה אז קודם כל בניתי אותו עם הערכים כהארדקודד ורק לאחר מכן הלכתי לקובץ הדיימנדס כרגע ושמתי אותם ואז החלפתי כאשר במציאות יותר נוח ברגע שאתם רוצים להשתמש באיזשהו ערך לא לכתוב אותו כהארדקודד כאן אלא ממש ללכת לקובץ

  22. 09:36

    הדיימנדס או הכל או רמתים להגדיר אותו שם ומיד להתייחס אליו אחרת אפשר לשכוח וזה מקור לבאגים עיצוביים בעתיד. אנחנו יכולים לגשת עכשיו ולהשתמש ב-colors.

  23. 09:55

    אז הנה אנחנו רואים שיש לנו פה איזשהו color מסוים, בואו נעתיק אותו. ואנחנו רוצים לסגור את ה-dimens, לגשת ל-colors, ולהוסיף כאן עוד color.

  24. 10:11

    color שהעתקנו זה היה ה-color הזה, והתפקיד שלו זה להיות טקסט view, טקסט color. אנחנו רוצים לשכפל את זה עוד פעמיים, 1. Edit טקסט טקסט קולור ו-Edit טקסט BackColor בואו רק נעתיק את הקולור הנכונים זה היה טקסט קולור של ה-Edit טקסט וזה היה BackGround קולור

  25. 10:58

    של ה-Edit טקסט נדביק ועכשיו אנחנו יכולים להשתמש בהם אז בואו ניגש וניפטר מזה ניגש ל-Colors והיה לנו שמה טקסט View טקסט קולור נשכפל אותו גם לכאן עכשיו אנחנו יכולים לגשת לטקסט קולור של האדיט טקסט קולור אדיט טקסט טקסט קולור נעתיק אותו נדביק כאן לא הדבקתי מאיזושהי סיבה

  26. 11:46

    קול סי קונטרול וי והאחרון אנחנו הולכים לפה ניקח קולור אדיט טקסט באק קולור קופי פייסט פייסט דבר האחרון שנשאר לנו זה המחרוזות. כאן אנחנו יכולים פשוט ללחוץ Alt Enter ואז Extract String Resource ולתת איזשהו שם למפתח של המחרוזת.

  27. 12:24

    זה יהיה Welcome, ניגש לכאן, זה יהיה Enter Details. ה-Hintים, יש לנו פה את ה-First Name, יש לנו כאן Last Name ויש לנו כאן City. כל הערכים של המחרוזות נכתבו כאן מפה למטה.

  28. 13:04

    אז עכשיו סיימנו להגדיר את העיצוב כך שהערכים עצמם לא משוכפלים ועשינו רק חצי דרך. למה? כי עדיין אנחנו יכולים לראות שבין רכיב לרכיב יש אותם עיצובים ואנחנו את זה גם רוצים למנוע.

  29. 13:24

    אז איך אפשר לעשות את זה? אז מה שאנחנו צריכים לראות זה את הקובץ החדש הזה שתמיד היה פה ואף פעם לא השתמשנו איתו וזה ה-styles. styles.xml זה קובץ שמחזיק סטיילינג שאנחנו יכולים להגדיר עבור כל הרכיבים הוויזואליים שיש באפליקציה.

  30. 13:44

    ובמקום לרשום את הערכים האלה שאנחנו רואים כאן שוב ושוב ושוב בין רכיב לרכיב אנחנו יכולים להגדיר אותם פעם אחת בקובץ הסטייל ואז פשוט לגשת לרכיב ולהגיד לו תקשיב הסטייל שלך הוא בלה וכל הערכים האלה לא משוכפלים לכל אחד אלא כתובים פעם אחת בסטייל

לקורס המלא: קורס פיתוח אפליקציות לאנדרואיד

ההרצאה הקודמת: Launcher Icon

ההרצאה הבאה: Themes

קורסים נוספים במסלול

  • קורס יסודות התכנות - שפת JAVA - קורס ג'אווה למתחילים
  • קורס פיתוח אפליקציות - לאייפון iPhone iOS - ב-Swift-Xcode
  • קורס פלאטר - Flutter - שפת DART של גוגל למובייל - פיתוח אפליקציות לאנדרואיד ואייפון
  • קורס PhoneGap - פיתוח אפליקציות לאנדרואיד ואייפון