התרשים הבא עוזר לכם להחליט באיזה API להשתמש כדי להטמיע את האנימציה.
כדי לבחור את ממשק ה-API המתאים ביותר לתרחיש לדוגמה שלכם, יש לפעול לפי השאלות בעץ ההחלטות הבאות:
- האם האנימציה שלי דומה יותר לאומנות וכוללת הרבה אלמנטים חזותיים? למשל, קובצי SVG או תמונות
- כן: האם יש לו קובצי SVG פשוטים? לדוגמה, סמל עם מיקרו-אנימציות
- כן:
AnimatedVectorDrawable
- לא: מסגרת אנימציה של צד שלישי, למשל
Lottie
- כן:
- לא: האם צריך לחזור על הסרטון כל הזמן?
- כן:
rememberInfiniteTransition
- לא: האם זו אנימציית פריסה?
- כן: לעבור בין כמה תכנים קומפוזביליים שיש להם תוכן שונה?
- כן: באמצעות ניווט-כתיבה?
- כן:
composable()
עםenterTransition
ו-exitTransition
הוגדרו - לא:
AnimatedContent
,Crossfade
אוPager
- כן:
- לא: אנימציית המראה / ההיעלמות?
- כן:
AnimatedVisibility
אוanimateFloatAsState
דרךModifier.alpha()
- לא: הגודל של האנימציה?
- כן:
Modifier.animateContentSize
- לא: נכס פריסה אחר? כלומר, היסט, מרווח פנימי וכו'
- כן: ניתן לעיין בקטע 'האם הנכסים בלתי תלויים לחלוטין זה בזה?'
- לא: אנימציות של פריטים ברשימה?
- כן:
animateItemPlacement()
(בקרוב אפשר יהיה להזמין מחדש ולמחוק)
- כן:
- כן:
- כן:
- כן: באמצעות ניווט-כתיבה?
- לא: האם צריך להוסיף אנימציה למספר נכסים?
- כן: האם הנכסים נפרדים לחלוטין זה מזה?
- כן:
animate*AsState
, בשביל טקסט, משתמשים ב-TextMotion.Animated
- לא: להתחיל באותו זמן?
- כן: כן:
updateTransition
עםAnimatedVisibility
,animateFloat
,animateInt
וכו' - לא:
Animatable
עםanimateTo
הופעלה בתזמונים שונים (באמצעות פונקציות השעיה)
- כן: כן:
- כן:
- לא: האם האנימציה כוללת קבוצה של ערכי יעד מוגדרים מראש?
- כן:
animate*AsState
, צריך להשתמש ב-TextMotion.Animated
בשביל טקסט - לא: אנימציה שמבוססת על תנועה? האנימציה שלכם היא מקור האמת היחיד?
- כן:
Animatable
עםanimateTo
/snapTo
- לא: אנימציה במבט אחד בלי ניהול מצב?
- כן:
AnimationState
אוanimate
- לא: אין כאן תשובה? הגשת בקשה להוספת תכונה
- כן:
- כן:
- כן:
- כן: האם הנכסים נפרדים לחלוטין זה מזה?
- כן: לעבור בין כמה תכנים קומפוזביליים שיש להם תוכן שונה?
- כן:
- כן: האם יש לו קובצי SVG פשוטים? לדוגמה, סמל עם מיקרו-אנימציות
מורידים את גרסת ה-PDF של הדיאגרמה.