Экрандар арасындагы өтүү анимациясы үчүн эмне кылуу керек?
sobes.tech AI
AIден жооп
Androidда экрандар ортосунда өтүү үчүн анимациялар бир нече ыкмаларды колдонуу менен ишке ашырылат:
-
Активдүүлүк анимациялары (Activity Animations): Тема же программалык түрдө аныкталат. Алар активдүүлүктөр үчүн кирүү жана чыгуу стандарттуу анимацияларын белгилөөгө мүмкүндүк берет.
override fun startActivity(intent: Intent) { super.startActivity(intent) overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left) } override fun finish() { super.finish() overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right) }Анимация файлдары (мисалы,
res/anim/slide_in_right.xml):<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="@android:integer/config_shortAnimTime" /> </set> -
Фрагменттердин анимациялары (Fragment Animations): Фрагмент транзакциясы учурунда аныкталат.
supportFragmentManager.beginTransaction() .setCustomAnimations(R.anim.fade_in, R.anim.fade_out, R.anim.fade_in, R.anim.fade_out) .replace(R.id.container, fragment) .commit() -
Бөлүштүрүлгөн элементтердин анимациялары (Shared Element Transitions): Бир нече Viewдин экрандар ортосунда өтүүсүн анимациялоого мүмкүндүк берет, үзгүлтүксүз эффект түзөт. Темада transition колдоосун активдештирүү талап кылынат.
Баштапкы активдүүлүктө:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // Анимация үчүн View ViewCompat.getTransitionName(sharedView) // Байланыш үчүн аталыш ) startActivity(intent, options.toBundle())кабыл алуучу активдүүлүктө:
// onCreate же onViewCreated ыкмасында (фрагмент үчүн) supportPostponeEnterTransition() // Кирүү анимациясын кечеңдетүү, Viewдер даяр болгонго чейин // Андан кийин, Viewдер даяр болсо (мисалы, сүрөттү жүктөөдө): supportStartPostponedEnterTransition()эки экранда да XML түзүмүндө:
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:transitionName="image_transition" /> <!-- Байланыш аталышы --> -
Component Animations (Navigation Component): Эгер Navigation Component колдонулса, өтүү анимацияларын түздөн-түз навигация графында белгилөөгө болот.
<action android:id="@+id/action_fragmentA_to_fragmentB" app:destination="@id/fragmentB" app:enterAnim="@anim/slide_in_right" app:exitAnim="@anim/slide_out_left" app:popEnterAnim="@anim/slide_in_left" app:popExitAnim="@anim/slide_out_right" />
Кийлигин тандоо колдонулган архитектурага (Activity, Fragments, Navigation Component) жана талап кылынган эффектке жараша болот.