PracticU

Dynamic Controls

בלי כתוביותעם כתוביות
PracticU › קורס פיתוח אפליקציות - לאנדרואיד - Android - ב-JAVA › Dynamic Controls
מילון מושגים:
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
XML - שפת סימון לייצוג נתונים מובְנים בעזרת תגיות, המשמשת להחלפת מידע בין מערכות ולקובצי הגדרות.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
Integer - סוג נתונים למספר שלם, כלומר מספר ללא חלק עשרוני.
לולאה - מבנה בקרה שחוזר על קטע קוד שוב ושוב כל עוד תנאי מתקיים או עבור כל פריט באוסף.
כפתור - רכיב בממשק המשתמש שהמשתמש לוחץ עליו כדי להפעיל פעולה, כמו שליחת טופס או מעבר לדף אחר.
Activity - ב-Android, רכיב שמייצג מסך יחיד של האפליקציה שאיתו המשתמש מתקשר.

Dynamic Controls
אפשר ליצור רכיבים במהלך הריצה, כמה שהמשתמש ביקש, ולהירשם לאירועים שלהם בקוד, כי הם לא קיימים בקובץ ה-XML. ההרצאה בונה מסך שבו המשתמש מכניס מספר, ולחיצה על Create יוצרת לחצנים בצבעים אקראיים, שכל אחד מהם צובע את המסך בצבעו.
המסך
EditText לקליטת מספר, לחצן Create, ומתחתיהם ScrollView שמכיל LinearLayout (בשם linearLayoutContainer) לגלילה כשהלחצנים רבים. ה-layout הראשי הוא linearLayoutMain.
השלבים העיקריים
1. קוראים את המספר: Integer.parseInt על הטקסט ב-EditText.
2. לולאה: רצה עד המספר ויוצרת לחצן עם new Button(this), כי ה-activity הוא ה-Context.
3. מאפייני הלחצן: setText, setAllCaps(false) ו-setBackgroundColor עם צבע אקראי.
4. צבע אקראי: פונקציית עזר פרטית getRandomColor מגרילה שלושה גוונים, אדום, ירוק וכחול, בעזרת Math.random() שמחזיר מספר בין 0 ל-1 (כולל 0 ולא כולל 1). מכפילים ב-256, ממירים ל-int, ומחזירים Color.rgb(red, green, blue).
5. מאפייני layout: יוצרים new LinearLayout.LayoutParams עם רוחב MATCH_PARENT וגובה WRAP_CONTENT, וקובעים שוליים של עשרה פיקסלים מכל צד. בקוד היחידות הן פיקסלים. אפשר להמיר ל-dp בנוסחה.
6. מוסיפים למסך: linearLayoutContainer.addView(button, layoutParams).
7. נרשמים לאירוע: לכל לחצן setOnClickListener עם מחלקה אנונימית. הפונקציה onClick מקבלת את הלחצן ששלח את האירוע (v). מקבלים ממנו את הרקע עם getBackground(), ממירים ל-ColorDrawable, קוראים getColor(), ומציבים את הצבע כרקע של linearLayoutMain.
התוצאה
בניסוי נוצרו 20 לחצנים, אפשר לגלול ביניהם, ולחיצה על כל אחד צובעת את המסך בצבע שלו. אותה פונקציה רשומה לכל הלחצנים, וכל אחד שולח את עצמו אליה.
אחרי ההרצאה אפשר ליצור רכיבים בזמן ריצה ולהירשם לאירועים שלהם, מה שאי אפשר לעשות דרך ה-XML.

פרקי ההרצאה: Dynamic Controls

  1. 00:00

    תוכנית ליצירת לחצנים דינמית

  2. 01:03

    פעולת הלחצנים וצבע רקע אקראי

  3. 02:01

    לולאה ליצירת לחצנים בקוד

  4. 03:18

    פונקציה לצבע אקראי עם Math.random

  5. 04:56

    הגדרת LayoutParams ו-Margin

  6. 06:16

    הוספת הלחצן ל-LinearLayout

תמלול ההרצאה: Dynamic Controls

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

  1. 00:03

    אחרי שראינו את ה-Listener Design Pattern וראינו איך אנחנו יכולים להירשם לאירועים בצורה דינמית, בואו נראה עכשיו איך אנחנו יכולים ליצור רכיבים בצורה דינמית וכמובן לאחר מכן להירשם לאירועים שלהם.

  2. 00:18

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

  3. 00:46

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

  4. 01:09

    אז הלחצן גורם לצביעה של צבע הרקע של המסך כולו, כאשר אנחנו הולכים לצבוע את ה-Linear Layout הראשי, Linear Layout Main.

  5. 01:23

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

  6. 01:36

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

  7. 01:50

    דבר ראשון, אנחנו רוצים לקבל את המספר שנכנס בתוך ה-Edit Text. אז בואו ניקח כאן איזשהו אינטג'ר קאונט, נגדיר אינטג'ר get, יותר דיוק parseInt וניגש ל-Edit Text count, גט טקסט טו סטרינג ואם יש לנו את המספר שהיוזר

  8. 02:15

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

  9. 02:36

    שלו אומר לנו תביאו לי מינימום את הקונטקסט אז בואו נגדיר לו דיס אנחנו מיין אקטיביטי אז אנחנו קונטקסט. לאחר מכן אנחנו רוצים להגדיר כל מיני מאפיינים ללחצן, אז בואו ניגש אליו ונגדיר לדוגמה set text change color.

  10. 02:56

    בואו נגדיר לדוגמה button set all caps false שלא יהיה הכל אותיות גדולות. button.set background color אנחנו רוצים להגדיר איזשהו צבע רקע רנדומלי. צבע זה אינטג'ר ולכן בואו נפגש ונבנה איזושהי פונקציית אזר פרטית כזאת שמחזירה אינטג'ר ונקראת get random color אז איך אנחנו יוצרים צבע יש לנו פה שלושה גוונים red, green וblue ליצירת צבע רקע רנדומלי

  11. 03:36

    יש לנו את המחלקה math.random ואנחנו רוצים שכל גוון יהיה בין 0 ל-256 כולל 0 ולא כולל 256 וזה בדיוק הקוד הזה לנו כאן מראה לאינטג'ר מפני שמאת' נקודה רנדום מחזירה לנו מספר רנדומלי בין 0 ל-1 דאבלי כזה ואנחנו רוצים למתוח אותו עד 0 בין 0 ל-256.

  12. 04:07

    המספר שחוזר הוא כולל 0 אך לא כולל 1 ולכן כל המתיחה הזאת תהיה בין 0 ל-256 כולל 0 לא כולל 256. אנחנו ממירים את זה לאינטג'ר כי אנחנו רוצים את הערך האינטג'רי של המספר רנדומלי ואנחנו מוצאים שלושה גוונים רד, גרין ובלו ואחרי שיש לנו שלושה גוונים כאלה אנחנו יכולים להחזיר color.rgb שאומר לנו הנה שלושת הגוונים איזה גוונים בעצם אתם רוצים לתת לי ויש לנו אותם רד, גרין ובלו והנה יש לנו פונקציה שמחזירה צבע

  13. 04:50

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

  14. 05:16

    נקודה layout params זה בעצם משתנה שמחזיק מאפיינים לגבי ה-layout עצמו אז ובואו ניצור אובייקט ממנו new linear layout.layout.params ואנחנו רוצים לתת כמה דברים.

  15. 05:37

    דבר ראשון linear layout.layout.params.match.parent ובואו פשוט נעתיק את זה, נדביק ונשנה את זה ל-wrap-content.

  16. 05:55

    אז עכשיו יש לנו בעצם את ה-width וה-height של הלחצן שקשורים ל-layout עצמו. דבר נוסף שאנחנו רוצים לתת זה מרג'ין, אז בואו נגדיר איזה שהם עשרה פיקסלים מכל צד. כשאנחנו מתייחסים בקוד, אז אנחנו כמובן מתייחסים רק לפיקסלים.

  17. 06:16

    אפשר לבצע איזושהי נוסחה ולהמיר את זה ל-dps. לאחר מכן בואו ניתן את המידע עצמו ל-linear layout שעוטף בעצם את הלחצנים. כלומר, אנחנו רוצים לקחת עכשיו את הלחצן ולהוסיף אותו ל-layout.

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

ההרצאה הקודמת: Dynamic Registration

ההרצאה הבאה: Options Menu

הרצאות קשורות מקורסים אחרים

  • User Controls
  • תרגול Dynamic Class
  • Embedding Dynamic Data
  • רכיבים נפוצים - Common Controls

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

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