
Animation וגם ב-ObjectAnimator, ולדעת מתי היא מתחילה, חוזרת, מסתיימת או מבוטלת.RotateAnimation ואחד עם ObjectAnimator. שניהם נטענים מקבצי XML, בתיקיות anim ו-animator: סיבוב מ-0 ל-360 לאורך שנייה, עם שתי חזרות, כלומר שלושה סיבובים בסך הכול. ב-TextView מתועדים האירועים. אפשר גם לבנות את האובייקטים בקוד.Animation: קוראים ל-setAnimationListener עם AnimationListener. יש שלוש פונקציות: onAnimationStart, onAnimationEnd ו-onAnimationRepeat. ב-start משתמשים ב-setText כדי לנקות מה שהיה, ובשאר ב-append, כדי לראות את הסדר.ObjectAnimator: קוראים ל-addListener עם AnimatorListener. יש בו ארבע פונקציות: start, end, repeat ובנוסף cancel.cancel() על כל אחד.Animation. ב-ObjectAnimator מתקבל Cancel ואחריו End, ואם מבטלים מיד, Start, Cancel, End.ObjectAnimator. ב-Animation ביטול מדווח כ-end.הטקסט המלא של הדקות הראשונות בהרצאה «Animation Events» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אשר אנחנו עובדים עם אנימציה, אנחנו יכולים להזין לסדרה של אירועים של אובייקטי האנימציה. את זה אנחנו יכולים לעשות גם אם אנחנו עובדים עם אובייקט אנימשן וגם אם אנחנו עובדים עם אובייקט אנימטור.
אז בואו נראה בדוגמה הזאת איך אנחנו יכולים להזין לאירועים בתהליך האנימציה. יש לנו כאן איבא שהיא דוגמה שבה יש לנו לחצן שבו אנחנו רוצים להפעיל אנימשן ולחצן אחר שבו אנחנו רוצים להפיל את אובייקט האנימטור אנחנו רוצים להפיל את זה על האובייקט תמונה ולגרום לה להסתובב מבחינת Rotate יש לנו כאן את התמונה וכאן למטה יש לנו איזשהו TextView
בכדי לרשום את האירועים כאשר הם מתרחשים עכשיו האנימציות כבר מוכנות בתרגיל הזה והן בנויות על ידי קלוצי XML יש לנו כאן את תקיית האנים שראינו ותקיית האנימטור שראינו בתקיית האנים אנחנו רואים Rotate וגם בתקיית האנימטור אנחנו רואים Rotate הרוטייט של האנים יש לנו כאן 0 עד 360, 50% relative to self
במשך שנייה אבל עם שתי חזרות זאת אומרת שכשאנחנו נופיל את האנימציה הזאת אנחנו הולכים לראות שלושה סיבובים המקורי ועוד שתי חזרות גם אובייקט הרוטייט של האנימטור יש לו את אותו הדבר מתלבשים על property rotation מ0 עד 360 במשך שנייה עם שתי חזרות אוקיי אז מה קורה בבחינת המיין?
מבחינת המיין אקטיביטי יש לנו כאן את אובייקט התמונה יש לנו את אובייקט הטקסט דוו בכדי לרשום את האירועים איתרנו אותם, ואז בלחצנים אנחנו פשוט מפעילים את האנימציה בשתי הדרכים השונות Rotate Animation, יוצרים אובייקט וטוענים את הקובץ XML ואגב אנחנו לא חייבים לטעון את הקובץ XML, יכננו גם לבנות אובייקט בקוד
וגם האובג'קט אנימטור, אותו הדבר, יכננו לבנות אובייקט בקוד אבל בדוגמה הזאת השתמשנו עם קובץ XML כאן אנחנו טוענים את הקבצים, אפשר לראות את זה כאן שיש פה Rotate שנמצא באנים וRotate שנמצא באנימטור ואז אנחנו כאן פשוט מפעילים את האנימציה לתמונה וגם כאן מגדירים Target ומפעילים את האנימציה
אם אנחנו מריצים את זה אז אנחנו יכולים לראות שכשאנחנו לוחצים על Start Animation יש לנו סיבוב 2, 3, Start Animator, סיבוב 2, 3 ובינתיים הכל עובד כמו שצריך אנחנו רוצים עכשיו להאזין לאירועים.
אז איך מבצעים את זה? מה שאנחנו צריכים לעשות זה פשוט להגיע לאובייקט של האנימיישן, לא משנה איזה, ולהירשם לאירועים. אז בואו ניגש לRotateAnimation.
ואנחנו רוצים להירשם לסטAnimationListener. נגדיר כאן אובייקט מסוג new, ויש לנו AnimationListener בצורה כזאת ועכשיו אנחנו רואים שיש לנו פה שלוש פונקציות שמתרחשות כתגובה לאירועים השונים בואו נראה אלו האירועים אלה יש לנו ב-OnAnimationStart אנחנו רואים שהפונקציה הזאת יתבצע OnAnimationEnd ו-OnAnimationRepeat מה שאנחנו רוצים לעשות זה פשוט
להציג את השם של האיבנט בתוך הטקסט ויו הוא נקרא טקסט ויו איבנט ויש לנו סט טקסט כאשר האנימיישן מתחילה להתבצע בואו נרשום סטארט עם ירידת שורה כאשר האנימיישן מסתיימת וגם כאשר האנימיישן מקבלת ריפית בואו בעצם את הריפית נשים רק מבחינת הסדר הטוב לפני אז אנחנו לא רוצים לבצע set text אלא append ככה שנראה את כל האירועים לפי הסדר
אז כאן אנחנו רוצים לרשום repeat ובסוף אנחנו רוצים גם כן לרשום end כאשר רק בהתחלה אנחנו רוצים לרשום start בשביל שהוא ימחוק את כל מה שהיה לפני זה בואו נריץ, נלחץ על Start Animation ואנחנו רואים Start, Repeat ו-Repeat ו-End למה Repeat ו-Repeat?
כי היינו פעמיים repeat עוד פעם Start, Repeat ראשון, Repeat שני, End אנחנו יכולים לקבל אירועים במהלך פעילות האנימציה