как сделать так, чтобы вид появлялся постепенно, а не внезапно - PullRequest
4 голосов
/ 15 декабря 2011

Мне нужно, чтобы определенный вид появлялся / исчезал постепенно, шаг за шагом, а не внезапно.Если я использую MyView.setvisibility(View.GONE) или MyView.setvisibility(View.VISIBLE), все происходит внезапно.Есть идеи, как это сделать?

Заранее спасибо.

Вот мой код:

    animFlipInNext = AnimationUtils.loadAnimation(this,
                        R.anim.push_left_in);
    animFlipInNext.setDuration(2000);
    animFlipInNext
                    .setAnimationListener(new Animation.AnimationListener() {
                    @Override
                public void onAnimationStart(Animation animation) {
                    System.out.println("AnimStart- LeftIn"
                                + " Will be displayed "
                            + vf.getDisplayedChild());
                    if (vf.getCurrentView().equals(rr)) {
                    System.out.println("begin layout for video");


                                rr.addView(myVideoView);
                         myVideoView.setAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in));
                               /* myVideoView.startAnimation(new MyScaler(1.0f,
                              1.0f, 0.0f, 1.0f, 2500, myVideoView,
                        true));*/
                        }
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                        System.out.println("AnimRepeat-LeftIn");
                        }

                        @Override
                public void onAnimationEnd(Animation animation) {                       System.out.println("Anim end "
                                        + vf.getDisplayedChild());

                                if (vf.getCurrentView().equals(rr)) {
                            System.out.println("layout for videoView");
                            rr.removeAllViews();
                            vf.stopFlipping();
                            myVideoView.start();
                        }

                            }
                        });

У меня есть анимация для ViewFlipper.Когда ViewFlipper содержит rr RelativeLayout, я добавляю к нему видео.Я пытаюсь сделать видео видимым, когда выполняется переход для rr, но это не сработало.

1 Ответ

6 голосов
/ 15 декабря 2011

Просмотр анимации - самый простой способ достичь этого ИМХО.

поместите это в /res/anim/fade_in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2200"></alpha>
    </set>

Тогда в вашем коде активности в вероятно onResume сделать что-то вроде:

someView.setAnimation(AnimationUtils.loadAnimation(context, R.anim.fade_in)); 

Это даст вам затухание в течение более 2,2 с. Добавлен интерполятор в xml, такой как AccelerateDecelerateInterpolator для более естественного исчезновения ощущений, если хотите.

...