Τι πρέπει να γίνει για την κινούμενη μετάβαση μεταξύ οθονών;
sobes.tech AI
Απάντηση από AI
Για την κινούμενη εικόνα μετάβασης μεταξύ οθονών σε Android, μπορούν να χρησιμοποιηθούν διάφορες προσεγγίσεις:
-
Animations δραστηριότητας (Activity Animations): Ορίζονται στα θέματα ή προγραμματιστικά. Επιτρέπουν τον καθορισμό προεπιλεγμένων 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) }Αρχεία animation (π.χ.,
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> -
Animations τμημάτων (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() -
Transitions κοινών στοιχείων (Shared Element Transitions): Επιτρέπουν την κινούμενη εικόνα μιας ή πολλών View μεταξύ οθονών, δημιουργώντας ένα εφέ συνεχούς. Απαιτείται ενεργοποίηση της υποστήριξης transition στο θέμα.
Στην αρχική δραστηριότητα:
val options = ActivityOptionsCompat.makeSceneTransitionAnimation( this, sharedView, // View για την animation ViewCompat.getTransitionName(sharedView) // Όνομα για τη σύνδεση ) startActivity(intent, options.toBundle())Στη δεχόμενη δραστηριότητα:
// Στη μέθοδο onCreate ή onViewCreated (για τμήματα) supportPostponeEnterTransition() // Αναβολή της εισερχόμενης animation μέχρι να είναι έτοιμα τα Views // Στη συνέχεια, όταν τα Views είναι έτοιμα (π.χ., σε ακροατή φόρτωσης εικόνας): 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, οι animations μετάβασης μπορούν να οριστούν απευθείας στο γράφημα πλοήγησης:
<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) και το επιθυμητό εφέ.