StuStirling
StuStirling

Reputation: 16211

Setting LinearLayout's Visibility After Animation

I have a LinearLayout which I create in my xml file with its visibility set to Gone. I then showIt using an Animation and thats fine.

I fade out my LinearLayout using an AlphaAnimation and this works fine.

My Problem

The problem however is when I listen to the animation using an AnimationListener and the onAnimationEnd method is called, it doesn't set the visibility of my LinearLayout to GONE as I can still click the ImageButtons that are inside it which is how I know they're still there.

here is my xml with my LinearLayout.

<LinearLayout
        android:id="@+id/photoOptionBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:alpha="1"
        android:background="@color/gpsBackground"
        android:orientation="horizontal"
        android:visibility="gone">

        <ImageButton
            android:id="@+id/displayShareBtn"
            style="@android:style/Widget.Holo.Button.Borderless.Small"
            android:background="@android:color/transparent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:padding="20dp"
            android:src="@drawable/share"
            android:contentDescription="Share the picture"/>

        <ImageButton
            android:id="@+id/displayDiscardBtn"
            style="@android:style/Widget.Holo.Button.Borderless.Small"
            android:background="@android:color/transparent"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:padding="20dp"
            android:src="@drawable/contentdiscard"
            android:contentDescription="Discard Picture"/>

    </LinearLayout>

Here is my fade out method along with the listener.

AlphaAnimation alpha = new AlphaAnimation(1.0F, 0.0F);
    alpha.setDuration(PhotoDisplayFragment.FADE_DURATION); // Make animation instant
    alpha.setFillAfter(true); // Tell it to persist after the animation ends
    // And then on your layout
    final LinearLayout temp = this._photoOptionsBar;
    alpha.setAnimationListener(new AnimationListener() {

        @Override
        public void onAnimationEnd(Animation animation) {
            // TODO Auto-generated method stub
            temp.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onAnimationStart(Animation animation) {
            // TODO Auto-generated method stub

        }

    });
    this._photoOptionsBar.startAnimation(alpha);

My Question

How do I set the visibility of the my LinearLayout to GONE after the animation ends?

Thanks in advance

Upvotes: 1

Views: 1494

Answers (2)

Blackbelt
Blackbelt

Reputation: 157467

The issue is related to setFillAfter which let the animation persist when it is finished. Remove and all will work as expected. If if you need the fade in animatio check the _photoOptionsBar visibilty and if it is gone apply the inverse animation:

new AlphaAnimation(0.0F, 1.0F);

Upvotes: 2

noxius
noxius

Reputation: 144

final LinearLayout temp = (LinearLayout) findViewById(R.id.photoOptionBar);
temp.setVisibility(View.GONE);

Upvotes: 0

Related Questions