动画后设置LinearLayout的可见性

时间:2012-10-23 11:35:22

标签: android android-layout android-linearlayout

我有一个我在xml文件中创建的LinearLayout,其可见性设置为Gone。然后我使用动画显示它就好了。

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

我的问题

然而问题是当我使用AnimationListener听动画并调用onAnimationEnd方法时,它不会将LinearLayout的可见性设置为{{1}因为我仍然可以点击其中的GONE,这就是我知道它们仍在那里的方式。

这是我的xml和我的LinearLayout。

ImageButtons

这是我的淡出方法和听众。

<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); LinearLayout的可见度?

提前致谢

2 个答案:

答案 0 :(得分:2)

该问题与setFillAfter有关,让动画在完成后仍然存在。删除,所有将按预期工作。如果你需要淡入淡出动画,请检查_photoOptionsBar可见性,如果它已经消失,则应用逆动画:

new AlphaAnimation(0.0F, 1.0F);

答案 1 :(得分:0)

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