我有一个我在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
的可见度?
提前致谢
答案 0 :(得分:2)
该问题与setFillAfter
有关,让动画在完成后仍然存在。删除,所有将按预期工作。如果你需要淡入淡出动画,请检查_photoOptionsBar
可见性,如果它已经消失,则应用逆动画:
new AlphaAnimation(0.0F, 1.0F);
答案 1 :(得分:0)
final LinearLayout temp = (LinearLayout) findViewById(R.id.photoOptionBar);
temp.setVisibility(View.GONE);