אנימציות יכולות להוסיף אותות חזותיים שמעדכנים את המשתמשים לגבי מה שקורה באפליקציה. הן שימושיות במיוחד כשמצב ממשק המשתמש משתנה, למשל כשתוכן חדש נטען או כשפעולות חדשות הופכות לזמינות. אנימציות גם מעניקות לאפליקציה מראה משופר, שמקנה לה מראה ותחושה של איכות גבוהה יותר.
מערכת Android כוללת ממשקי API שונים ליצירת אנימציות, בהתאם לסוג האנימציה שרוצים ליצור. במסמך הזה נספק סקירה כללית של הדרכים השונות להוספת תנועה לממשק המשתמש.
כדי להבין טוב יותר מתי כדאי להשתמש באנימציות, כדאי לעיין גם במדריך של Material Design בנושא תנועה.
אנימציה של מפות סיביות
כדי להנפיש גרפיקה של קובץ bitmap, כמו סמל או איור, משתמשים בממשקי ה-API של הנפשה ניתנת לציור. בדרך כלל, האנימציות האלה מוגדרות באופן סטטי באמצעות משאב drawable, אבל אפשר גם להגדיר את התנהגות האנימציה בזמן הריצה.
לדוגמה, דרך טובה להעביר למשתמש את המסר ששתי פעולות קשורות זו לזו היא להוסיף אנימציה ללחצן הפעלה שמתחלף ללחצן השהיה כשהוא מקבל הקשה.
מידע נוסף זמין במאמר אנימציה של גרפיקה שניתן לצייר.
אנימציה של הניראות והתנועה של ממשק המשתמש
כשצריך לשנות את החשיפה או המיקום של תצוגות בפריסה, מומלץ לכלול אנימציות עדינות כדי לעזור למשתמש להבין איך ממשק המשתמש משתנה.
כדי להעביר, לחשוף או להסתיר תצוגות בתוך הפריסה הנוכחית, אפשר להשתמש במערכת האנימציה של המאפיינים שמספקת החבילה android.animation
, שזמינה ב-Android 3.0 (רמת API 11) ואילך. ממשקי ה-API האלה מעדכנים את המאפיינים של אובייקטי View
לאורך זמן, ומציירים מחדש את התצוגה באופן קבוע כשהמאפיינים משתנים. לדוגמה, כשמשנים את מאפייני המיקום, התצוגה זזה במסך. כשמשנים את מאפיין האלפא, התצוגה מופיעה בהדרגה או נעלמת בהדרגה.
הדרך הפשוטה ביותר ליצור את האנימציות האלה היא להפעיל אנימציות בתצוגה, כך שכאשר משנים את החשיפה של תצוגה, האנימציה חלה באופן אוטומטי. מידע נוסף זמין במאמר אנימציה אוטומטית של עדכוני פריסה.
במאמר סקירה כללית על אנימציות של נכסים מוסבר איך יוצרים אנימציות באמצעות מערכת האנימציות של הנכס. תוכלו גם לעיין בדפים הבאים כדי ליצור אנימציות נפוצות:
תנועה מבוססת-פיזיקה
כשהדבר אפשרי, כדאי להשתמש בפיזיקה של העולם האמיתי באנימציות כדי שהן ייראו טבעיות. לדוגמה, הם צריכים לשמור על המומנטום כשהיעדים שלהם משתנים, ולבצע מעברים חלקים במהלך השינויים.
כדי לספק את ההתנהגויות האלה, ספריית התמיכה של Android כוללת ממשקי API של אנימציות שמבוססים על פיזיקה, שמסתמכים על חוקי הפיזיקה כדי לקבוע איך האנימציות מתרחשות.
אלה שתי אנימציות נפוצות שמבוססות על פיזיקה:
אנימציות שלא מבוססות על פיזיקה – כמו אנימציות שנוצרו באמצעות ממשקי ה-API של ObjectAnimator
– הן סטטיות למדי ויש להן משך קבוע. אם ערך היעד משתנה, צריך לבטל את האנימציה בזמן השינוי של ערך היעד, להגדיר מחדש את האנימציה עם ערך חדש כערך ההתחלה החדש ולהוסיף את ערך היעד החדש. מבחינה חזותית, התהליך הזה יוצר עצירה פתאומית באנימציה ותנועה לא עקבית לאחר מכן, כפי שמוצג באיור 3.
אנימציות שנוצרות באמצעות ממשקי API של אנימציה שמבוססים על פיזיקה, כמו DynamicAnimation
, מופעלות על ידי כוח. השינוי בערך היעד גורם לשינוי בכוח. הכוח החדש חל על המהירות הקיימת, וכך מתבצע מעבר רציף ליעד החדש. התוצאה של התהליך הזה היא אנימציה שנראית טבעית יותר, כפי שמוצג באיור 4.
אנימציה של שינויי פריסה
ב-Android 4.4 ואילך (API ברמה 19 ואילך), אפשר להשתמש במסגרת המעבר כדי ליצור אנימציות כשמחליפים את הפריסה בתוך הפעילות או הפלח הנוכחיים. כל מה שצריך לעשות הוא לציין את הפריסה של ההתחלה והסיום ואת סוג האנימציה שבה רוצים להשתמש. לאחר מכן המערכת מחשבת ומפעילה אנימציה בין שני הפריסות. אפשר להשתמש באפשרות הזו כדי להחליף את כל ממשק המשתמש, או כדי להעביר או להחליף רק חלק מהתצוגות.
לדוגמה, כשהמשתמש מקשיב על פריט כדי לראות מידע נוסף, אפשר להחליף את הפריסה בפרטים של הפריט, ולהחיל מעבר כמו זה שמוצג באיור 5.
הפריסה בהתחלה ובסיום מאוחסנת ב-Scene
, אבל בדרך כלל הסצנה בהתחלה נקבעת באופן אוטומטי מהפריסה הנוכחית. יוצרים את Transition
כדי להודיע למערכת איזה סוג אנימציה רוצים, ואז קוראים ל-TransitionManager.go()
והמערכת מפעילה את האנימציה כדי להחליף את הפריסות.
מידע נוסף זמין במאמר הוספת אנימציה לשינויים בפריסה באמצעות מעבר. קוד לדוגמה זמין במאמר BasicTransition.
הנפשה בין פעילויות
במכשירים עם Android מגרסה 5.0 (רמת API 21) ואילך, אפשר גם ליצור אנימציות שמציגות את המעבר בין הפעילויות. האפשרות הזו מבוססת על אותה מסגרת של מעברים שמתוארת בקטע הקודם, אבל היא מאפשרת ליצור אנימציות בין פריסות בפעילויות נפרדות.
אפשר להוסיף אנימציות פשוטות, כמו החלקה של הפעילות החדשה מהצד או הוספת אותה בהדרגה, אבל אפשר גם ליצור אנימציות שמעבירות בין תצוגות משותפות בכל פעילות. לדוגמה, כשהמשתמש מקשיב על פריט כדי לראות מידע נוסף, אפשר לעבור לפעילות חדשה באמצעות אנימציה שמגדילה את הפריט בצורה חלקה עד שהוא ממלא את המסך, כמו האנימציה שמוצגת באיור 5.
כרגיל, קוראים ל-startActivity()
, אבל מעבירים לה חבילה של אפשרויות שמספקת ActivityOptions.makeSceneTransitionAnimation()
.
חבילת האפשרויות הזו עשויה לכלול את התצוגות ששותפו בין הפעילויות, כדי שמערכת המעבר תוכל לחבר אותן במהלך האנימציה.
מקורות מידע נוספים: