setVisibility(View.GONE)不会消失视图

Tim*_*Sim 3 android

在我的活动中,我有一个开始按钮,当点击它时它应该淡出并最终消失 setVisibility(View.GONE)

问题是设置可见性GONE不会消失视图,它仍然可见.我有目的地使视图动画淡出为0.1(而不是0),即使在我调用setVisibility(View.GONE)它之后我也可以在后台看到它.

淡出动画anim_fade_out.xml是:

<?xml version="1.0" encoding="utf-8"?>
<set
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:fillAfter="true" android:fillEnabled="true">

        <alpha
            android:fromAlpha="1.0"
            android:toAlpha="0.1"
            android:duration="200" />
</set>
Run Code Online (Sandbox Code Playgroud)

方法是showTimer():

private void showTimer() {
    final LinearLayout startButtonArea = (LinearLayout)findViewById(R.id.startButtonArea);      

    Animation animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.anim_fade_out);

    startButtonArea.startAnimation(animFadeOut);

    animFadeOut.setAnimationListener(new AnimationListener() {
        @Override
        public void onAnimationEnd(Animation animation) {
            startButtonArea.setVisibility(View.GONE);
            Log.d("Animation ended","startButtonArea SHOULD BE GONE BUT IT ISN'T");
        }
        @Override
        public void onAnimationRepeat(Animation animation) {}
        @Override
        public void onAnimationStart(Animation animation) {}    
    });

}
Run Code Online (Sandbox Code Playgroud)

重申一下,我知道动画的结束alpha是0.1(通常是0),但我想确认视图是真的GONE而不是.

Gre*_*nis 7

因为您fillAfter是真的,动画会在您onAnimationEnd调用之后设置属性.您可以更改fillAfter为false,或者像这样执行:

@Override
public void onAnimationEnd(Animation animation) {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            startButtonArea.setVisibility(View.GONE);
            Log.d("Animation ended","startButtonArea SHOULD BE GONE BUT IT ISN'T");
        }
    }, 0);
}
Run Code Online (Sandbox Code Playgroud)

  • 不,我们是开发人员.多数民众赞成我们做的:) (5认同)