java - 淡出和隐藏相对布局的困难

标签 java android animation fade alpha

我正在尝试为我的“自定义”媒体 Controller 制作一个简单的淡出动画。

我遇到的问题是布局不会淡出,它只是在一秒钟后消失(就好像我将 Visibility 设置为 GONE 并延迟 1 秒)。

这是我的功能:

private void fadeOut(final View view) {
        final AlphaAnimation fadeOutAnimation = new AlphaAnimation(1.0F,  0.0F);
        fadeOutAnimation.setDuration(1000);
        fadeOutAnimation.setAnimationListener(new AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                view.setVisibility(View.GONE);
            }
        });
        view.startAnimation(fadeOutAnimation);
    }

以及我试图隐藏的布局:

<RelativeLayout
            android:id="@+id/videoControllerContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="0dp"
            android:alpha="50"
            android:background="@color/DarkGrey" >

            <ImageButton
                android:id="@+id/playVideoButton"
                android:layout_width="wrap_content"
                android:layout_height="50dip"
                android:layout_alignParentLeft="true"
                android:background="@null"
                android:contentDescription="@string/playButton"
                android:scaleType="fitCenter"
                android:src="@drawable/play" />

            <ImageButton
                android:id="@+id/fullScreenVideoButton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="20dp"
                android:background="@null"
                android:contentDescription="@string/fullscreen"
                android:src="@drawable/fullscreen" />
        </RelativeLayout>

值得一提的是,所有这些都在一个 fragment 中使用。

我希望有更多经验的人会花时间让我知道我做错了什么。

最佳答案

我想你应该把它放在你想要的 anim xml 文件中:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0" android:toAlpha="0.0"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:duration="1000"/>
</set>

我认为您的问题是未定义插值器。因此,请尝试将这一行的等价物放入您的代码中:

android:interpolator="@android:anim/accelerate_interpolator"

希望对你有帮助

编辑:做了一点研究,看起来你想说

fadeOutAnimation.setInterpolator(new AccelerateInterpolator());

关于java - 淡出和隐藏相对布局的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428588/

相关文章:

java - 在Java中以编程方式运行maven安装?

java - 在maven项目中保存java文件失败

java - 音频样本在 Android 11 上未按预期播放

ios - 动画按钮允许用户交互不起作用

java - BIRT Excel 格式的奇怪单元格值

android - 在 flutter 中使用图标按钮的单选按钮样式

android - 线程函数中的c++参数更改

java - android View 翻转动画?

python - 行走动画循环

java - 制作自定义链表类——需要帮助实现 get 方法