مقدمه ای بر انیمیشن ها

روش Compose را امتحان کنید
Jetpack Compose جعبه ابزار UI توصیه شده برای اندروید است. نحوه استفاده از انیمیشن ها در Compose را بیاموزید.

انیمیشن‌ها می‌توانند نشانه‌های بصری را اضافه کنند که کاربران را از آنچه در برنامه شما می‌گذرد مطلع می‌کند. آنها به ویژه زمانی مفید هستند که UI حالت را تغییر می دهد، مانند زمانی که محتوای جدید بارگیری می شود یا اقدامات جدید در دسترس قرار می گیرند. انیمیشن ها همچنین ظاهری صیقلی به برنامه شما می بخشند که به آن ظاهر و احساسی با کیفیت می بخشد.

اندروید بسته به نوع انیمیشنی که می خواهید، API های انیمیشن متفاوتی را شامل می شود. این مستندات یک نمای کلی از روش های مختلفی که می توانید حرکت را به رابط کاربری خود اضافه کنید ارائه می دهد.

برای درک بهتر اینکه چه زمانی باید از انیمیشن استفاده کنید، راهنمای طراحی متریال در مورد حرکت را نیز ببینید.

متحرک سازی بیت مپ ها

شکل 1. قابل ترسیم متحرک.

برای متحرک سازی یک گرافیک بیت مپ مانند یک نماد یا تصویر، از API های انیمیشن قابل ترسیم استفاده کنید. معمولاً این انیمیشن ها به صورت ایستا با یک منبع قابل ترسیم تعریف می شوند، اما می توانید رفتار انیمیشن را در زمان اجرا نیز تعریف کنید.

به عنوان مثال، یک راه خوب برای برقراری ارتباط با کاربر مبنی بر اینکه دو عملکرد مرتبط هستند، متحرک کردن دکمه پخش است که با ضربه زدن به دکمه مکث تبدیل می شود.

برای اطلاعات بیشتر، انیمیشن گرافیکی قابل ترسیم را بخوانید.

دید و حرکت رابط کاربری را متحرک کنید

شکل 2. یک انیمیشن ظریف هنگامی که یک دیالوگ ظاهر می شود و ناپدید می شود، باعث می شود که تغییر رابط کاربری کمتر ناراحت کننده باشد.

هنگامی که نیاز به تغییر دید یا موقعیت نماها در چیدمان خود دارید، بهتر است از انیمیشن های ظریف استفاده کنید تا به کاربر در درک چگونگی تغییر رابط کاربری کمک کنید.

برای جابه‌جایی، آشکار کردن یا پنهان کردن نماها در طرح‌بندی فعلی، می‌توانید از سیستم انیمیشن ویژگی ارائه‌شده توسط بسته android.animation ، موجود در Android نسخه 3.0 (سطح API 11) و بالاتر استفاده کنید. این APIها ویژگی‌های اشیاء View شما را در یک دوره زمانی به روز می‌کنند، و به طور مداوم با تغییر ویژگی‌ها، نمای را دوباره ترسیم می‌کنند. به عنوان مثال، هنگامی که ویژگی های موقعیت را تغییر می دهید، نما در سراسر صفحه حرکت می کند. هنگامی که ویژگی آلفا را تغییر می دهید، نمای داخل یا خارج می شود.

برای ساده‌ترین راه برای ایجاد این انیمیشن‌ها، انیمیشن‌ها را در طرح‌بندی خود فعال کنید تا وقتی نمایان بودن یک نما را تغییر می‌دهید، یک انیمیشن به طور خودکار اعمال شود. برای اطلاعات بیشتر، به‌روزرسانی‌های طرح‌بندی متحرک خودکار را ببینید.

برای یادگیری نحوه ساخت انیمیشن با استفاده از سیستم انیمیشن ویژگی، نمای کلی انیمیشن Property را بخوانید. همچنین می توانید صفحات زیر را برای ایجاد انیمیشن های رایج مشاهده کنید:

حرکت مبتنی بر فیزیک

شکل 3. انیمیشن ساخته شده با ObjectAnimator.

شکل 4. انیمیشن ساخته شده با API های مبتنی بر فیزیک.

در صورت امکان، فیزیک دنیای واقعی را روی انیمیشن های خود اعمال کنید تا ظاهری طبیعی داشته باشند. به عنوان مثال، زمانی که هدف آنها تغییر می کند، باید حرکت خود را حفظ کنند و در طول هر تغییری، انتقال نرمی انجام دهند.

برای ارائه این رفتارها، کتابخانه پشتیبانی Android شامل APIهای انیمیشن مبتنی بر فیزیک است که برای کنترل چگونگی ایجاد انیمیشن‌های شما بر قوانین فیزیک متکی هستند.

دو انیمیشن متداول مبتنی بر فیزیک به شرح زیر است:

انیمیشن‌هایی که بر اساس فیزیک نیستند - مانند آنهایی که با APIهای ObjectAnimator ساخته شده‌اند - نسبتاً ثابت هستند و مدت زمان ثابتی دارند. اگر مقدار هدف تغییر کرد، باید انیمیشن را در زمان تغییر مقدار هدف لغو کنید، انیمیشن را با یک مقدار جدید به عنوان مقدار شروع جدید پیکربندی کنید و مقدار هدف جدید را اضافه کنید. همانطور که در شکل 3 نشان داده شده است، از نظر بصری، این فرآیند یک توقف ناگهانی در انیمیشن ایجاد می کند و پس از آن یک حرکت ناهمگون ایجاد می کند.

انیمیشن‌هایی که با APIهای انیمیشن مبتنی بر فیزیک ساخته می‌شوند، مانند DynamicAnimation ، به زور هدایت می‌شوند. تغییر در مقدار هدف منجر به تغییر نیرو می شود. نیروی جدید بر روی سرعت موجود اعمال می شود، که یک انتقال مداوم به هدف جدید را انجام می دهد. همانطور که در شکل 4 نشان داده شده است، این فرآیند منجر به یک انیمیشن طبیعی تر می شود.

تغییر طرح بندی متحرک

شکل 5. یک انیمیشن برای نشان دادن جزئیات بیشتر می تواند با تغییر طرح یا شروع یک فعالیت جدید به دست آید.

در اندروید 4.4 (سطح API 19) و بالاتر، می‌توانید از چارچوب انتقال برای ایجاد انیمیشن‌ها هنگام تعویض طرح‌بندی در فعالیت یا قطعه فعلی استفاده کنید. تنها کاری که باید انجام دهید این است که طرح شروع و پایان و نوع انیمیشنی که می خواهید استفاده کنید را مشخص کنید. سپس سیستم یک انیمیشن را بین دو طرح بندی مشخص کرده و اجرا می کند. می‌توانید از این برای تعویض کل رابط کاربری یا جابه‌جایی یا جایگزینی برخی از نماها استفاده کنید.

به عنوان مثال، هنگامی که کاربر برای دیدن اطلاعات بیشتر، روی یک مورد ضربه می‌زند، می‌توانید طرح‌بندی را با جزئیات مورد جایگزین کنید، مانند آنچه در شکل 5 نشان داده شده است.

طرح شروع و پایان هر کدام در یک Scene ذخیره می شوند، اگرچه صحنه شروع معمولاً به طور خودکار از طرح فعلی تعیین می شود. شما یک Transition ایجاد می‌کنید تا به سیستم بگویید چه نوع انیمیشنی را می‌خواهید، سپس TransitionManager.go() را فراخوانی کنید و سیستم انیمیشن را برای تعویض طرح‌بندی اجرا می‌کند.

برای اطلاعات بیشتر، متحرک کردن تغییرات طرح‌بندی با استفاده از یک انتقال را بخوانید. برای نمونه کد، BasicTransition را بررسی کنید.

بین فعالیت ها متحرک سازید

در اندروید 5.0 (سطح API 21) و بالاتر، می‌توانید انیمیشن‌هایی ایجاد کنید که بین فعالیت‌های شما جابه‌جا می‌شوند. این بر اساس همان چارچوب انتقال توضیح داده شده در بخش قبل است، اما به شما امکان می‌دهد انیمیشن‌هایی را بین طرح‌بندی‌ها در فعالیت‌های جداگانه ایجاد کنید.

می‌توانید انیمیشن‌های ساده مانند لغزش فعالیت جدید از کنار یا محو کردن آن را اعمال کنید، اما همچنین می‌توانید انیمیشن‌هایی ایجاد کنید که بین نماهای اشتراک‌گذاری شده در هر فعالیت جابه‌جا شوند. به عنوان مثال، هنگامی که کاربر برای دیدن اطلاعات بیشتر روی یک مورد ضربه می‌زند، می‌توانید با انیمیشنی که به طور یکپارچه آن مورد را رشد می‌دهد، مانند انیمیشن نشان داده شده در شکل 5، به یک فعالیت جدید تبدیل شوید تا صفحه را پر کند.

طبق معمول، startActivity() فراخوانی می کنید، اما مجموعه ای از گزینه های ارائه شده توسط ActivityOptions.makeSceneTransitionAnimation() را به آن ارسال می کنید. این دسته از گزینه‌ها ممکن است شامل نماهایی باشد که بین فعالیت‌ها به اشتراک گذاشته می‌شوند تا چارچوب انتقال بتواند آنها را در طول انیمیشن به هم متصل کند.

برای منابع اضافی، نگاه کنید به: