Pertanyaan Apakah Transisi Aktivitas / Fragmen kompatibel dengan perangkat pra-Lollipop?


Saya mencoba membuat Transisi Aktivitas menggunakan Elemen Bersama di perangkat pra-Lollipop (4.x). Apa itu mungkin? Sejauh ini, saya mencoba ini:

public class RewardDetail extends ActionBarActivity {
    @Override
    public void onCreate(final Bundle savedInstanceState) {
        ...

        ViewCompat.setTransitionName(imageView, TRANSITION_NAME);
    }

    ...

    public static void launch(ActionBarActivity activity, View transitionView, WelcomeReward detailData) {
        ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, transitionView, TRANSITION_NAME);
        Intent intent = new Intent(activity, RewardDetail.class);
        intent.putExtra(PARAM_DATA, detailData);
        ActivityCompat.startActivity(activity, intent, options.toBundle());
    }
}

dipanggil oleh:

@Override
public void onClick(final View v) {
    int position = recyclerView.getChildPosition(v);
    WelcomeReward welcomeReward = data.get(position);
    RewardDetail.launch(WelcomeRewardActivity.this, v.findViewById(R.id.reward_view), welcomeReward);
}

Tetapi ini menghasilkan transisi "biasa" (tidak ada elemen bersama). Ada ide?

EDIT

Menurut video ini, itu bisa dilakukan:

https://www.youtube.com/watch?v=RhiPJByIMrM&index=8&list=WL

Apakah ada perpustakaan yang sudah menerapkan ini untuk pra Lollipop?


32
2017-10-25 21:23


asal


Jawaban:


Tidak, Aktivitas / Fragmen Transisi tidak dimungkinkan pada perangkat pra-Lollipop. Menurut dokumentasi:

Mulai aktivitas dengan informasi peluncuran tambahan, jika bisa.

Di Android 4.1+ opsi tambahan diperkenalkan untuk memungkinkan lebih banyak kontrol pada animasi peluncuran aktivitas. Aplikasi dapat menggunakan metode ini bersama dengan ActivityOptionsCompat untuk menggunakan animasi ini bila tersedia. Ketika dijalankan pada versi platform di mana fitur ini tidak ada aktivitas akan diluncurkan secara normal.

Lihat juga jawaban George Mount pertanyaan StackOverflow ini.


18
2017-10-26 00:25



Anda dapat memeriksa pustaka ini untuk aktivitas dan fragmen transisi untuk perangkat pra lollipop

dependencies {
        compile 'com.albinmathew:PreLollipopTransition:1.1.2'
}

https://github.com/albinmathew/PreLollipopTransition


8
2018-05-28 09:36



Meskipun transisi Lollipop Activity / Fragment yang mewah tidak tersedia sebelum Lollipop (tanpa menggunakan pustaka pihak ke-3), Anda masih dapat mengganti animasi yang digunakan untuk transisi antar aktivitas.

Tepat sebelum / setelah Anda mulai mengaktifkan startActivity () Anda dapat melakukan panggilan ke [Activity.overridePendingTransition] (http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int)). Ketika Anda meninggalkan aktivitas Anda, panggil metode yang sama.

Demikian pula Anda dapat menggunakan ActivityOptionsCompat untuk menentukan animasi khusus yang akan digunakan selama transisi.

ActivityOptionsCompat opts =
    ActivityOptionsCompat.makeCustomAnimation(getActivity(), R.anim.in, R.anim.out);
startActivity(intent, opts.toBundle());

2
2017-11-17 23:22



Ada pustaka dukungan, tetapi tidak mendukung (semua) transisi pada versi Android di bawah 5.0. Namun ada beberapa alternatif:

Pustaka kompatibilitas tidak resmi
  https://github.com/andkulikov/transitions-everywhere
https://github.com/takahirom/PreLollipopTransition
https://github.com/lgvalle/Material-Animations

Android KitKat
  http://www.doubleencore.com/2013/11/new-transitions-framework/ dan a   sampel yang ditemukan di folder sampel SDK Anda.

Diposting sebelumnya ke duplikat pertanyaan ini di sini: https://stackoverflow.com/a/27344471/1683141


2
2018-01-29 11:52