1

我有一个 LinearLayout,我在我的 xml 文件中创建它的可见性设置为Gone. 然后我使用动画来展示它,这很好。

我淡出我LinearLayout的使用AlphaAnimation,这很好用。

我的问题

然而问题是,当我使用 an 收听动画AnimationListener并调用该onAnimationEnd方法时,它不会将 my 的可见性设置为LinearLayoutGONE因为我仍然可以单击其中的ImageButtons那些,这就是我知道它们仍然存在的方式。

这是我的 xml 和我的 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>

这是我的淡出方法以及侦听器。

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 LinearLayoutto的可见性?GONE

提前致谢

4

2 回答 2

2

这个问题与setFillAfter让动画在完成后持续存在有关。删除,一切都会按预期工作。如果您需要动画中的淡入淡出,请检查_photoOptionsBar可见性,如果它消失了,请应用反向动画:

new AlphaAnimation(0.0F, 1.0F);
于 2012-10-23T12:11:00.727 回答
0
final LinearLayout temp = (LinearLayout) findViewById(R.id.photoOptionBar);
temp.setVisibility(View.GONE);
于 2012-10-23T11:38:49.867 回答