Библиотека поддержки: анимация FragmentTransaction не работает - PullRequest
11 голосов
/ 26 января 2012

Я использую библиотеку поддержки Питера Дойла 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 ]

13 голосов
/ 22 сентября 2013

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

        FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
        ft.setCustomAnimations(R.anim.fade_out,R.anim.fade_in);
        ft.replace(R.id.fragmentDetails, detailsFrag);
1 голос
/ 29 мая 2012

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

Я не использовал библиотеку 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();
0 голосов
/ 12 июня 2014

Попробуйте сделать снимок вашей карты 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...