【问题标题】:how to make a view to appear gradually, not suddenly如何使视图逐渐出现,而不是突然出现
【发布时间】:2012-01-20 22:08:28
【问题描述】:

我需要让某个视图逐渐出现/消失,一步一步,而不是突然。如果我使用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 进行转换时,我试图让视频可见,但它不起作用。

【问题讨论】:

标签: android view visibility


【解决方案1】:

View Animations 是实现此恕我直言的最简单方法。

把它放在 /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>

然后在你的 Activity 代码中可能 onResume 做 smth 之类的:

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

这将使您在 2.2 秒内淡入淡出。向 xml 中添加了一个插值器,如 AccelerateDecelerateInterpolator,如果您愿意,可以更自然的感觉消失。

【讨论】:

  • 我相信这适用于图像。我尝试将它用于videoview,但它对我没有帮助。还是非常感谢。
  • 它应该适用于从 android.view.View 派生的任何东西,VideoView 可以这样做,因此应该接受 setAnimation()。什么具体似乎不起作用?
  • 我用我的代码编辑了我的问题并解释了我想要做什么。
  • 不适用于 VideoView... 就我而言,我只是在 VideoView 上添加一个视图(带背景颜色的空视图。),然后在其上添加动画
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 2020-12-28
  • 2017-01-27
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多