
ObjectAnimator: כל הגדרה עוברת לקובץ XML, והקוד רק טוען אותו ומפעיל.Android Resource Directory מסוג animator, ולא anim. כך עובדים קבצי XML של Object Animator.AnimatorInflater.loadAnimator(this, R.animator.rotate) מחזיר Animator כללי, מבצעים cast ל-ObjectAnimator, קובעים setTarget ל-image view ומפעילים עם start.private void animate(Animator animator) שמקבלת את האנימטור הטעון, קובעת לו target ומפעילה אותו.objectAnimator ריקה עם propertyName בשם rotation, valueFrom 0, valueTo 360 ו-duration 1000.set, כי יש שני animators: scaleX עד 1.5 ו-scaleY עד 2, כל אחד עם משך 1000, repeatCount 1 ו-repeatMode reverse.translationX עד 100 ועל translationY עד 200, ללא valueFrom.set, מספיק objectAnimator אחד על alpha עד 0.2.set אחד ומסירים namespaces שחוזרים על עצמם.set העליונה מגדירים ordering כ-sequentially, כדי שהאנימציות ירוצו אחת אחרי השנייה. מכיוון ש-scaleX ו-scaleY צריכים לרוץ יחד, עוטפים אותם ב-set פנימי עם ordering של together, שהוא ברירת המחדל. התוצאה: סיבוב ואחריו הגדלה והקטנה.objectAnimator יחיד על translationY עד 500 עם הפונקציה bounce_interpolator מתוך @android:anim/.objectAnimator על backgroundColor. בצבעים ב-XML ההקסדצימלי נכתב עם סולמית, והראשון (FF) הוא ה-alpha. valueFrom הוא הצבע האפור הבהיר ו-valueTo הצבע החדש, והמשך 3000. כאן מפעילים אותו על LinearLayout הראשי ולא על התמונה, ולכן אי אפשר להשתמש בפונקציית העזר ומטעינים אותו בנפרד.valueFrom כשיש repeatMode reverse, כי האנימציה חוזרת למצב ההתחלתי.ObjectAnimator, כולל קבוצות, סדר הפעלה ושינוי צבע, ולהפעיל אותן בשורה אחת.הטקסט המלא של הדקות הראשונות בהרצאה «XML Animators» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אז אחרי שעוצנו את ההגדרות של האובייקטים של האנימיישנז לקבצי XML, בואו נעשה את אותו הדבר בדיוק, אבל עבור אובייקטי האובג'קט אנימטורס השונים. כאן אנחנו צריכים לצרף תיקייה, Android Resource Directory, אבל לא את תיקיית האנים, אלא תיקיית האנימטור.
ככה זה עובד, אם אנחנו רוצים להגדיר קבצי XML עבור Object Animator, אז התיקייה צריכה להיות Animator, בואו נבצע אוקיי, והנה יש לנו את תיקיית Animator, ובואו נראה מהם ההגדרות שהיו לנו כאן.
נתחיל עם ה-Rotate, כאן ב-Java Code ביצענו Object Object Animator, והכנסנו אליו Object of Float, כאשר התלבשנו על תכונת ה-Rotate, rotation יותר דיוק, מ-0 עד 360 נתנו כאן duration של 1000 ואת כל זה עשינו עבור ה-image view את זה אנחנו רוצים עכשיו להגדיר בתוך קובץ XML אז בואו נצרף קובץ חדש,
animator resource file ונקרא לו rotate יש לנו כאן את תגית ה-set שבמקומה אנחנו רוצים הפעם תגית מסוג object animator ככה זה עובד נגדיר את התגית הזאת כתגית ריקה, וניתן לה את התכונות הדרושות.
יש לנו קודם כל את ה-property name. ה-property name שהתלבשנו עליו היה rotation. לאחר מכן יש לנו value from, זה היה 0. הדבר הבא שהגדרנו זה value to, זה היה 360, וה-duration היה 1000.
כעת אנחנו רוצים לטעון את המידע של קובץ ה-XML הזה לקוד ולהכיל אותו על אובייקט התמונה. אז מה שאנחנו יכולים לבצע זה יצירה של אובייקט Object Animator, בואו נקרא לו Rotate Animator, ואנחנו רוצים להכניס אליו את הטעינה של האובייקט הזה מקובץ ה-XML.
זה מתבצע על ידי הפקודה, האנימטור-אינפלייטר, נקודה load-אנימטור, הקונטקסט שלנו זה הדיס, וקובץ ה-XML שלנו זה R, נקודה, הפעם זה באנימטור, נקודה רוטייט. אחרי שהגדרנו את הרוטייט-אנימטור, בואו רגע נוריד את שלושת אלה, אנחנו רוצים לבצע קודם כל קאסטינג כאן, כשהוא מחזיר לנו אובייקט אנימטור כללי, בייס, אנחנו רוצים אובג'קט אנימטור,
ואנחנו רוצים לבצע סט טארגט על אובייקט הרוטייט אנימטור שלנו, והסט טארגט זה יהיה האימג'וו, ולבסוף, רוטייט אנימטור נקודה סטארט. אז ראינו שיש כאן בעצם שלוש שורות שמבצעות את זה, אבל בואו טיפה נקצר את התהליכים האלה כי אנחנו בעצם רוצים לבצע את שלושת הדברים האלה בכל אחת מהפונקציות.
אז מה שנעשה נגדיר כאן פונקציה private void נקרא לה animate והיא תקבל אובייקט אנימטור כללי נקרא לו object animator והאובייקט אנימטור הזה יבצע את שתי הפעולות האלה שביצענו כאן.
אני אקח object animator כאן וכאן ומה שאנחנו רוצים לבצע זה פשוט לקרוא לפונקציית ה-animate ולשלוח אליה את פקודת הטעינה של האובייקט מקובץ ה-xml ויש לנו את כל הקוד הזה וזה מחליף את שלושת השורות האלה ואנחנו יכולים באותה הזדמנות להיפטר גם מהקוד הקודם והנה יש לנו פה את הצמצום של הקוד שאנחנו יכולים להשיג
בגלל שהמידע האינפורמטיבי נמצא בקבצי ה-XML בואו נריץ, נלחץ על לחצן ה-Rotate ואנחנו מקבלים את אותו אפקט סיבוב של 360 מעלות תחל מ-0 כאשר ההגדרות נשמרו בקובץ ה-XML, Rotate.XML ויש לנו גם פונקציה שאנחנו יכולים לקרוא לה עם כל אחד מההגדרות של האובג'קט אנימטור שאנחנו טוענים מקבצי XML השונים.
אז בואו נעבור להגדרה השנייה, ההגדרה השנייה הייתה Scale, אנחנו יכולים לראות את זה כאן, וזה בעצם היו שתי הגדרות של אובג'קט אנימטור.
אז בואו נצרף קובץ XML חדש, נקרא לו Scale, ואנחנו רוצים להשאיר את תגית ה-Set בגלל שיש לנו שתי הגדרות של Object Animator. הגדרה הראשונה, Object Animator, בואו נגדיר Property Name, היה לנו Scale X, אנחנו יכולים לראות את זה כאן, ואנחנו רוצים להגיע to 1.5, duration 1000, repeat count 1 וrepeat mode reverse, ואנחנו רוצים עוד scale 1 של y, אבל
הוא עובד על scale y והוא הולך עד 2. בואו נחזור לפה, זה היה scale x, value from ובעצם 1, value to היה על ציר x 1.5, duration 1000, repeat count 1, repeat mode reverse, כל ההגדרה הזאת אנחנו רוצים לשכפל, ופשוט יש לנו פה את ציר y, ששם אנחנו הולכים p2.
ועכשיו אנחנו יכולים לבצע את תהינה של הקובץ הזה, ממש כל מה שעשינו פה בקוד אנחנו משכפלים לקובץ. אז בואו נעתיק את השורה הזאת, שימו לב כמה שורות קוד זה חופך לנו.
יש לנו כאן את Scale, בואו נריץ, נלחץ על לחצן ה-Scale וקיבלנו את אותו האפקט בדיוק. בואו נחזור ונבצע הפעם את ה-Translate. נצרף קובץ, נקרא לו Translate A. אנחנו רוצים את הגיטה SET, בפני שאנחנו רואים שיש לנו שני טרנסלטים בטכניקה הזאת, אחד על Translation X עד 100, Translation Y עד 200, וכל הגדורות האחרות הם אותו הדבר.
אז בואו ניקח את ה... בעצם אנחנו יכולים האמת להעתיק כבר את האובג'קט אנימטור הזה, נצא קוד copy-paste כזה, ניקח translation x, נדביק במקום scale x, ואנחנו לא רוצים from, אנחנו רוצים רק 2.
אז value 2 ויהיה 100. duration אותו הדבר, count אותו הדבר. כאן אנחנו רוצים את translation y, אין צורך ב-from. אנחנו רוצים שה-to יהיה 200, ונראה לי שזהו.
בואו ניגש, נעתיק בשורה הזאת, נדביק אותה במקום כל זה. נשנה את ה-scale ל-Translate ונריץ. נלחץ על לחצן ה-Translate וקיבלנו את אותו האפקט כמו מקודם.
בואו נעבור ל-Alpha, נצרף Alpha. כאן אנחנו לא צריכים את תגיט ה-Set, אנחנו צריכים רק תגיט Object Animator. כי יש לנו רק תכונת alpha 1, בואו ניתן property name alpha, value to 0.2, do ration 1000, repeat count 1, repeat mode reverse, ונבצע תינה של הקובץ הזה.
נעתיק את הקטע הקוד הזה, נדביק אותו פה, נשנה לקובץ alpha, בואו נריץ,