我有包含一些视图的垂直LinearLayout。在点击视图的按钮上,我发送一些请求,并在响应中从动画布局中删除视图(xml中为animateLayoutChanges="true"
)。当布局中只剩下一个视图时,我禁用布局更改动画。删除最后一个视图后,我隐藏了布局并将另一个布局设置为可见。
couponsListLayout.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@Override
public void onLayoutChange(View view, int i, int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
switch (couponsListLayout.getChildCount()) {
case 1:
//disable layout disappear animation if one coupon left
couponsListLayout.getLayoutTransition().disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING);
break;
case 0:
//hide coupons layout if nothing to clip
if (itemsExists()) {
hideCouponsLayout();
} else {
showEmptyLayout();
}
break;
}
}
});
以下是我点击查看按钮
的操作public void clipCoupon(final Coupon coupon, final StatusCouponView couponView, CouponClipSource source) {
if (JBrainServer.transactionBeginned()) {
Session.clipCoupon(coupon.id, new OnServerDoneListener() {
@Override
public void onDone(final int code, final byte[] body) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
if (code == 204) {
removeCoupon(couponView, coupon);
} else {
if (couponView != null) {
couponView.stopClipAnimation();
}
listener.onClipError(code, body);
}
}
});
}
}, source);
} else {
removeCoupon(couponView, coupon);
}
}
public void removeCoupon(final StatusCouponView couponView, Coupon coupon) {
couponsListLayout.removeView(couponView);
clippedCouponsTargets.add(coupon.targetOfferId);
clippedCouponsIds.add(coupon.id);
if (sessionCoupons != null && !sessionCoupons.isEmpty()) {
Session.removeCoupon(coupon);
if (!sessionCoupons.isEmpty() && couponsListLayout.getOrientation() == LinearLayout.HORIZONTAL) {
Coupons.sendAnalytics(sessionCoupons.get(0), CouponAnalytics.Action.IMPRESSION);
}
}
}
这是布局
<LinearLayout
android:id="@+id/view_status_coupons_list_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/main_view_status_coupons_layout_margin"
android:animateLayoutChanges="true"
android:orientation="vertical" />
当我逐个点击视图时,它可以正常工作。
但是当我同时点击两个视图时,disableTransitionType
由于某种原因没有被调用,并且即将到来的视图设置错误(我得到了空白屏幕)。
如何在同时点击两个视图时处理这种情况,并在删除最后一个视图之前始终设置disableTransitionType(LayoutTransition.CHANGE_DISAPPEARING)
?