
animate שמקבלת Interpolator, מחלקת הבסיס של כולם. חשוב לייבא את android.view.animation.Interpolator ולא את הגרסה מ-android.graphics.TranslateAnimation מ-y=0 עד 500 פיקסלים למטה, בלי תזוזה ב-x. משך שנייה (1000 מילי-שניות), setRepeatCount(1) ו-setRepeatMode(Animation.REVERSE), כדי שתחזור לנקודת המוצא.setInterpolator. אחר כך startAnimation על ה-ImageView.animate עם אובייקט מהטיפוס המתאים. הראשון שולח null, כלומר ללא interpolator.LinearInterpolator: תנועה אחידה לכל אורך הדרך.AccelerateInterpolator: מתחיל לאט והולך מהר, ובדרך חזרה ההפך.DecelerateInterpolator: מתחיל מהר והולך לאט.AccelerateDecelerateInterpolator: לאט, מהר, לאט.AnticipateInterpolator: ציפייה, זז קצת לכיוון ההפוך לפני שמתקדם.OvershootInterpolator: עובר את נקודת הסיום וחוזר.AnticipateOvershootInterpolator: שילוב של שניהם.FastOutLinearInInterpolator, FastOutSlowInInterpolator ו-LinearOutSlowInInterpolator.BounceInterpolator: קפיצות בסוף.CycleInterpolator: מבצע מחזורים, וה-constructor מקבל מספר מחזורים, בהדגמה 1.PathInterpolator: מקבל אובייקט Path שמגדיר את המהלך. בהדגמה lineTo ל-(0, 0.25), moveTo ל-(0, 0.5) ו-lineTo ל-(1, 1), ולכן האנימציה קופצת, מתקדמת עד רבע, קופצת לחצי וממשיכה לסוף. הוא תלוי ב-API level, והשגיאה על כך הושתקה לצורך הדוגמה.הטקסט המלא של הדקות הראשונות בהרצאה «פונקציות Interpolator» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בסרטון הקודם ראינו כל מיני סוגים שונים של אנימציות. ראינו Rotate Animation, ראינו Scale Animation, ראינו Translate Animation, ראינו Alpha Animation, ראינו איך אפשר לשלב את כל האנימציות האלה ביחד, ראינו איך אפשר לעשות דילי בין אנימציה אחת לאנימציה אחרת,
והדבר האחרון שראינו זה היה פונקציה שנקראת Interpolator. וראינו שפונקציית אינטרפולטור זה פשוט פונקציה מתמטית שמתארת איך לבצע את האנימציה.
כאן אנחנו הולכים לראות את כל הפונקציות האינטרפולטיות שקיימות באפליקציית אנדרויד נכון להיום. אז מה שבנינו כאן זה בעצם איזה שהם מלחצנים שכל לחצן הולך להדגים משהו אחד או פונקציה אחת שקשורה לאינטרפולטור.
כאשר הלחצן הראשון בעצם מריץ את הפעילות האנימטיבית ללא כל פונקציית אינטרפולטור, כלומר אנחנו שולחים בעצם נל, ומכאן מתחילות להיות פונקציות אנימטיביות כאשר כל אחת מתארת פונקציית אינטרפולטור אחרת.
אז בואו נעבור עליהם ואז ניגש לקוד ונראה איך אנחנו בונים אותם. אז יש לנו כאן אפשרות ל-Linear, Accelerate, כלומר תאוצה, Decelerate, כלומר תאותה, גם Accelerate וגם Decelerate, לאחר מכן יש לנו Anticipate, ציפייה, Overshoot, כלומר יתר, מעבר לנקודת הסוף, לאחר מכן יש לנו פונקציה שמתארת Anticipate Overshoot,
גם מעין ציפייה כזאת וגם Overshoot, לאחר מכן פונקציה שנקראת FastOutLinearIn, יש לנו FastOutSlowIn, יש לנו LinearOutSlowIn, יש לנו את פונקציית ה-Bounce, יש לנו פונקציה שנקראת Cycle, ולבסוף Path.
מה שאנחנו רוצים לעשות זה פשוט לבדוק את כל אחת מהן ולראות איך כל אחת נראית כאשר אנחנו רוצים להריץ את אותה אנימציה על פני כל הלחצנים פשוט להחליף את פונקציית האינטרפולטור אז בואו ניגש לקוד ונראה איך אנחנו יכולים לבצע את זה הדבר הראשון שכדע לנו לבצע זה לבנות איזושהי פונקציה שפשוט תגדיר את האנימציה עצמה
והפונקציה הזאת פשוט תקבל את פונקציית האינטרפולטור הדרושה ותשלב אותה באנימציה אז בואו נבנה פה איזושהי private, שימו לב רק שכאן למעלה פשוט הלכתי ויצרתי את האירוע הקליק של כל אחד מהלחצנים ופה למעלה יש לנו את ה-image view.
אז מה שאנחנו רוצים לעשות זה פונקציית private void ונקרא לה פשוט animate ויתקבל את פונקציית ה-interpolator שזאת בעצם מחלקת הבסיס של כל האובייקטים שמתארים פונקציות אינטרפולטיות שונות.
בואו נקרא לזה פשוט אינטרפולטור, ובואו נגדיר את אותה אנימציה שהגדרנו בסוף הסרטון הקודם, זה היה translateAnimation, נקרא לזה translateAnimation, נגדיר new, translateAnimation, ונגדיר שה-x מתחיל מ-0 אבל נשאר ב-0, אין לנו תזוזה על ציר x, נגדיר שה-y מתחיל ממקום 0, כלומר כמובן מהמיקום הנוכחי של התמונה,
והולך עד 500 פיקסלים לכיוון מטה. לאחר מכן נגדיר Duration, Translate Animation, Set Duration למשך שנייה אחת, אלף מילי שניות.
לאחר מכן, Translate Animation, Set Repeat Count 1, זאת אומרת שפעם אחת תהיה חזרה ואז הוא יחזור לנקודת המוצא. translateAnimation, setRepeatMode, נגדיר אותו כAnimation.reverse, אנחנו רוצים שהוא יחזור בחזרה, ולא לדוגמה יתחיל מההתחלה כRepeat לנקודת היעד, וכעת אנחנו רוצים לבדוק האם האינטרפולטור ששלחנו לפונקציה שונה מנהל,
כי אפיר לנו להכניס אינטרפולטור שהוא נהל לתוך פונקציית האינטרפולטור. אז אם שלחו לנו משהו שהוא לא נאלי, אנחנו רוצים לגשת לטרנסלייט אנימיישן, נקודה, סט אינטרפולטור, ממש כמו שעשינו בסרטון הקודם, ולתת את אובייקט הבסיס של האינטרפולטור שלנו, כאשר יש לנו כאן כמובן אובייקט אמיתי שהולך להישלח.
יש לנו פה רק איזושהי שגיאה, בואו נאתר אותה, המערכת דורשת מאיתנו שאנחנו ניתן Android View Animation Interpolator, אבל שלחנו Android Graphics Interpolator.
אז בואו רק נשנה את זה, לא לגרפיקס, אלא לאנדרואיד View Animation, זה כמובן יהיה פה למעלה, איפה אנחנו רואים את הגרפיקס ששלחנו, הנה הוא, אז אנחנו רוצים לשנות אותו לאנדרואיד View, ואני כבר לא זוכר מה זה היה שם, Android view animation interpolator, בסדר, animation, זאת אומרת שיש לנו בעצם שתי, שני פאקג'ים של interpolator
ואנחנו צריכים את Android view animation interpolator, בואו נראה אם זה מסתדר, פרפקט ואחרי שסיימנו להגדיר את כל ה-translate animation, אנחנו רוצים לגשת ל-image view, tart animation ולתת את ה-Translate Animation אז בנינו פעם אחת פונקציה שנקראת Animate וכל מה שהיא צריכה לעשות זה פשוט לקבל בכל אחד מהרצנים את הפונקציה המתאימה של האינטרפולטור
של התצורה עצמה של האנימציה כאשר בפעם הראשונה אנחנו רוצים לשלוח נל כי זה בעצם הלחצן הראשון, נן אין לנו שום אינטרפולטור אנחנו רוצים לראות איך המערכת עובדת ללא שום פונקציה, בעצם הפעילות הדפולטית.
עכשיו, כל פעם שאנחנו רוצים לשלוח פונקציית אינטרפולטור, זה פשוט אובייקט מהטיפוס שמתאר את הפונקציה. אם אנחנו רוצים לינאר, אז בואו נשלח לינאר, לינאר אינטרפולטור, בצורה כזאת.
אם אנחנו רוצים לשלוח אקסלרייט, בואו ניגש לאנימייט ונשלח ניו, ויש לנו Accelerate Interpolator וזה פשוט ממש אובייקטים שאנחנו שולחים למטה אנחנו פשוט מצרפים אותם