
tag.shape: יוצרים shape_regular_button (מלבן עם גרדיאנט משחור לכחול, גבול ופינות עגולות) ו-shape_pressed_button שמועתק ממנו, עם צבע סיום צהוב, זווית 45 וגבול שחור.drawable שבו תגית transition במקום selector, ובתוכה שני item עם drawable: הראשון הרגיל והשני הלחוץ.ToggleButton: זה לחצן שנשאר לחוץ עד הלחיצה הבאה, ולכן רואים בו היטב את שני המצבים. קובעים לו textOn ו-textOff (בדוגמה "Turn off sounds" ו-"Turn on sounds"), textAllCaps="false" ואת קובץ המעבר כ-background.view.getBackground() כ-TransitionDrawable. מפעילים startTransition(1000) למעבר קדימה, ו-reverseTransition(1000) להחזרה. הערך 1000 הוא אלפית שנייה, כלומר שנייה אחת.tag של הרכיב, מאפיין מסוג Object שהמערכת לא משתמשת בו ושמיועד למתכנת. מציבים בו true כמצב התחלתי.view.getTag(), ממירים למחרוזת ואז לבוליאני. אם הערך true מפעילים startTransition ומציבים setTag עם false. אחרת מפעילים reverseTransition. כך כל מתג שומר את מצבו בעצמו, ולוחצים עליהם בסדר כלשהו ללא תלות.tag בלי דגלים נפרדים.הטקסט המלא של הדקות הראשונות בהרצאה «Transition Drawable» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
קובץ ריסורס נוסף שניתן להכניס לתוך תיקיית דרואבול נקרא טרנזישן. טרנזישן זה בעצם אפשרות להגדיר מעבר נקי בין שני מצבים.
זאת אומרת, אם יש לנו נניח לחצן שיש עליו איזושהי צורה או צבע א', ואנחנו רוצים להעביר אותו לצורה או צבע ב', אבל בצורה הדרגתית ונעימה כזאת, אז אנחנו יכולים להגדיר את זה גם כן בתוך תיקיית דרואבול.
אז בואו נראה איך עושים את זה. לצורך הדוגמה, קודם כל בואו נצרף שני שייפים. בואו ניקח שייפ ראשון, נקרא לו regular button, ונגדיר שיש לנו פה שייפ, נגדיר ריקטנגל, נגדיר גרדיאנט, סטארט קולור, איזשהו צבע התחלתי,
בואו ניקח שחור, אנד קולור, איזשהו צבע סופי, לא ניקח שחור, כבר נבחר צבע אחר, בואו נניח איזשהו כחול כזה, וזווית סף לגרדיאנט בואו ניקח סטרוק פאן וויד פני דיפיז נעשה לו פינות עגולות
זה בעצם הגדרה ראשונה של שייפ שאנחנו יכולים לשים על לחצן בואו ניגש ונבנה עוד קובץ בכדי לבצע את המעבר ביניהם זה יהיה פרסט בטון אז ניגש לרגיולר בטון נעתיק את הכל נדביק בפרסט בטון אבל נשנה כמה דברים קודם קודם כל האנד קולור בואו נשנה אותו לסוג של צהוב כזה נשנה את הזווית למינוס 45 כדי שזה יהיה הפוך ונשנה את הסטרוק
לשחור זאת אומרת יש לנו פה שני שייפים רקטנגלים אבל הם די שונים אחד מהשני מבחינת המרקם מבחינת הצבעים וכדומה עכשיו אנחנו רוצים בעצם להגדיר את אותו קובץ של הטרנזישן שמבצע את המעבר ביניהם.
בואו נצרף אותו, נקרא לו Transition ונשתמש בו עבור Toggle Button. Toggle Button זה בעצם לחצן שאנחנו יכולים ללחוץ עליו, אבל הלחצן ממשיך להישאר לחוץ עד הלחיצה הבאה ואז הוא נראה לא לחוץ.
למה כדאי לנו להשתמש בלחצן הזה לצורך הדוגמה? כי אז אנחנו יכולים לראות בדיוק את המעבר בין שני המצבים ולראות איך זה בעצם מתחבר אחד עם השני ונשאר לאורך זמן.
אז בואו ניקח טאגל באטם, בעצם אנחנו נמצאים כרגע בטרנזישן, אנחנו צריכים לייצר טרנזישן. במקום הסלקטור נבחר טרנזישן ויש לנו שני אייטמים.
האייטמים שאנחנו רוצים לתת זה דרובל ופשוט לבחור את השייפים השונים שהגדרנו. נתחיל עם הרגולר, נשכפל את זה ונחליף אותו לפרסט. כל מה שעשינו זה הגדרנו שני אייטמים בתוך קובץ הטרנזישן.
כעת אנחנו יכולים לגשת למיין אקטיביטי וכאן להגדיר את ה-Taggle בטל. אז בואו ניתן לו Match Parent כ-Weed, Wrap Content כ-Height, והנה יש לנו כאילו לחצן רגיל אבל זה Taggle, Taggle זה מעין מתג כזה, On/Off.
נגדיר לו איזשהו מרג'ין, שוליים, SRDP, טקסט סייז, טקסט עבור מצב של און, בואו נניח שאנחנו רוצים איזשהו טאגל בטן שאחראי על הדלקה וכיבוי של סאונדס, של הקולות.
אז בואו נגדיר שזה יהיה turn off sounds ואנחנו רוצים טקסט on, off turn on sounds. זאת אומרת שאם אנחנו נמצאים במצב של on אנחנו רוצים שיהיה כתוב turn off, ואם אנחנו נמצאים במצב של off אנחנו רוצים שיהיה כתוב turn on.
שינוי המצב טקסט all caps false, כדי שהכתב יהיה כתב רגיל ולא Capital Letters ולבסוף Background, ה-Background שאנחנו רוצים נמצא בדרובול והוא נקרא Transition Toggle Button, אחרי שקראתי לו טאבל, בואו נשנה אותו Shift F6 Toggle Button Factor,
הכל בסדר. עכשיו אם אנחנו מסתכלים אנחנו רואים שיש לנו פה את הצבע הכחול הזה, ובעצם זה הצבע הראשון שהוגדר, בואו נסתכל עוד פעם על ה-transition toggle-button ונראה שזה הצבע הראשון שהוגדר, אנחנו רואים פה-shape-regular-button בואו ניגש ל-shape-regular-button ונראה שזה בעצם הגרדיאנט הזה, הפרסט זה הסוג
של הצהוב השני שהגדרנו. כאשר אנחנו רוצים לבצע את ההפיכה של ה-transition אנחנו יכולים לעשות את זה אך ורק דרך הקוד ולא דרך ה-XML.
זה אומר שאנחנו צריכים עכשיו לגשת ל-on click ולבחור פה אירוע click, toggle button, נגיע לקוד וכאן אנחנו בעצם רוצים להחליף את המצב שלו.
אז השיטה הפשוטה ביותר להשיג את הפעילות הזאת זה לבנות איזשהו משתנה בולעני, דגל מסוים, בוא נניח שהדגל הזה בתור התחלה יהיה false וכאן לבדוק במידה והדגל רו שאפשר כמובן להשאיר את זה כ-if flag בצורה כזאת אז אנחנו רוצים עכשיו לשנות את המצב לצורך כך אנחנו צריכים משתנה מסוג transition droble ניגש ל-view שזה אותו
toggle button שהפעיל אותנו וניגש וניקח את ה-background שלו ומה שאנחנו רוצים לעשות עכשיו זה זה טרנזישן דרובל נקודה סטארט טרנזישן ואנחנו קובעים כמה זמן אנחנו רוצים שהשינוי ייקח.
1000 זה אומר שנייה אחת ל-1000 מיליסקונט אלס,