Android 动画淡入/淡出不是在回调函数中设置视图的可见性

Android animation fade in / fade out is not setting the visibility of the view in the callback function

我有 android 视图,我想在用户单击按钮时淡入和淡出。正在调用动画本身并正在调用回调,但是当动画触发时无法看到视图。我认为问题出在 xml 布局上,我已经坚持了几个小时,如果有人能提供帮助,我将不胜感激。

我的主要布局:- 只是查看问题

<LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="left|top"
        android:background="@color/whiteOverlay"
        android:gravity="center_vertical|center_horizontal"
        android:id="@+id/uploadOptions"
        android:alpha="0"
        android:visibility="gone">

        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:paddingLeft="40dp"
            android:paddingRight="40dp">

            <Button
                style = "@style/basic_button"
                android:text="@string/selectFromGallery"
                android:id="@+id/gallery_select"
                android:layout_marginTop="10dp"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />

            <Button
                style = "@style/basic_button"
                android:text="@string/selectFromCamera"
                android:id="@+id/camera_select"
                android:layout_marginTop="10dp"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
        </LinearLayout>
    </LinearLayout>

淡入

<?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:interpolator="@android:anim/accelerate_interpolator"
        android:duration="500" />
</set>

淡出

<?xml version="1.0" encoding="UTF-8"?>
<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="500" />
</set>

Activity Java -

public class regPP extends Activity {
    private String lang = "";
    private Boolean optionsActive = false;
    private LinearLayout options = null;


    private void fade (final View view, final Boolean Toggle){
        Animation anim;
        view.setVisibility(View.VISIBLE);
        if(Toggle){
            //fadeOut
            anim = AnimationUtils.loadAnimation(regPP.this, R.anim.fadeout);
            Log.d("FADE","FadeOut");
        } else {
            //fadeIn
            anim = AnimationUtils.loadAnimation(regPP.this, R.anim.fadein);
            Log.d("FADE","FadeIn");
        }
        view.startAnimation(anim);
        anim.setAnimationListener(new Animation.AnimationListener(){
            @Override
            public void onAnimationStart(Animation animation) {

            }
            @Override
            public void onAnimationEnd(Animation arg0) {
                //Functionality here
                if(Toggle){
                    view.setVisibility(View.GONE);
                    Log.d("FADE", "FadeOut Callback");
                } else {
                    view.setVisibility(View.VISIBLE);
                    Log.d("FADE", "FadeIn Callback");
                }
            }
            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
    }

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.lang = getResources().getString(R.string.lang);
        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(policy);
        final Context context = regPP.this;

        setContentView(R.layout.reg_pp);

        ImageButton uploadTog = (ImageButton) findViewById(R.id.uploadTog);
        options = (LinearLayout) findViewById(R.id.uploadOptions);

        uploadTog.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fade(options,false);
                optionsActive = true;
            }
        });

    }
    @Override
    public void onBackPressed() {
        if(optionsActive){
            fade(options,true);
            optionsActive = false;
        } else {
            super.onBackPressed();
        }
    }
}

删除此行可能对您有所帮助

android:能见度="gone"

可见性消失了 这就是为什么您的视图不可见的原因

    android:visibility="gone"