Библиотека поддержки: анимация FragmentTransaction не работает

Я использую библиотеку поддержки https://github.com/petedoyle/android-support-v4-googlemaps Питера Дойла для реализации действия, в котором используются как фрагменты, так и карты Google, и похоже, что анимация FragmentTransaction не работает. Я пытался использовать setCustomAnimations(int enter, int exit) метод, а также setTransition(int transit) метод, но безрезультатно. Кто-нибудь смог заставить работать анимацию, или также были проблемы с работой анимации?

Некоторые из анимаций, которые я попробовал:

setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE)

setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out)

setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right)

3 ответа

Вы должны вызвать FragmentTransaction. Сначала установите setCustomAnimations, а затем вызовите FragmentTransaction. Замените метод следующим образом:

        FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
        ft.setCustomAnimations(R.anim.fade_out,R.anim.fade_in);
        ft.replace(R.id.fragmentDetails, detailsFrag);

Вы пробовали FragmentTransaction.remove (), а затем FragmentTransaction.add () вместо FragmentTransaction.replace ()? Я видел в других темах жалуется на replace() не работает, как ожидалось.

Я не использовал библиотеку https://github.com/petedoyle/android-support-v4-googlemaps, но могу подтвердить, что приведенный ниже код работает с android-support-v4.jar:

FragmentTransaction tx = getSupportFragmentManager().beginTransaction();
tx.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
tx.replace(R.id.fragment_container, new Fragment2());
tx.addToBackStack(null);
tx.commit();

Попробуйте сделать снимок вашей карты Google:

private void snapShot() {
    SnapshotReadyCallback callback = new SnapshotReadyCallback() {
        Bitmap bitmap;

        @Override
        public void onSnapshotReady(Bitmap snapshot) {
            // TODO Auto-generated method stub
            bitmap = snapshot;
            try {
                FileOutputStream out = new FileOutputStream(getActivity()
                        .getFilesDir() + "/MapSnapshot.png");
                   bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            } catch (Exception e) {
                   e.printStackTrace();
            }
        }
    };

    map.snapshot(callback);

}

Сделайте новый фрагмент, который имеет только изображение карты. Загрузите этот новый фрагмент с помощью replace и затем выполните переход на фрагмент, который вы хотите заменить: final SnapShotFragment snapFrag = new SnapShotFragment(); FragmentTransactionaction = getFragmentManager() .beginTransaction();

                        transaction.replace(MapFragment.this.getId(),
                                snapFrag);
                        transaction.addToBackStack(null);
                        transaction.commit();
                        getFragmentManager().executePendingTransactions();
                        final boolean roi = isInROI;

                        WayPointDetailActivity waypointFrag = new WayPointDetailActivity();
                        waypointFrag.setWayPointId(wp.getId());
                        waypointFrag.setInRoi(roi);
                        transaction = getFragmentManager()
                                .beginTransaction();

                        transaction.setCustomAnimations(R.anim.enter,
                                R.anim.exit);

                        transaction.replace(snapFrag.getId(), waypointFrag);
                        transaction.addToBackStack(null);
                        transaction.commit();
Другие вопросы по тегам