整理的demo 这里面有个问题 上面的菜单按钮在底部弹出框时是没有被覆盖的 也就是单独的布局 如果菜单是在底部弹出框包含的布局中 频繁点击会报异常
菜单的频繁切换也有异常 应该是动画的问题
java.lang.IllegalStateException: Cannot start this animator on a detached view!
github地址
https://github.com/zzz40500/AndroidSweetSheet/commit/7d4e62d659e68cfdb420c2223b6ae21b404bfaac
解决办法
Delegate.java 里面
SweetSheet.Status
必须是显示的时候才能消失 也就是动画结束的时候
/** * 消失 */ protected void dismiss() { if (getStatus() != SweetSheet.Status.SHOW) { return; } mBg.setClickable(false); dismissShowdown(); ObjectAnimator translationOut = ObjectAnimator.ofFloat(mRootView, "translationY", 0, mRootView.getHeight()); translationOut.setDuration(600); translationOut.setInterpolator(new DecelerateInterpolator()); translationOut.addListener(new SimpleAnimationListener() { @Override public void onAnimationStart(Animator animation) { mStatus = SweetSheet.Status.DISMISSING; } @Override public void onAnimationEnd(Animator animation) { mStatus = SweetSheet.Status.DISMISS; mParentVG.removeView(mRootView); } }); translationOut.start(); }
阴影部分 点击也可能出现奔溃异常 所以我直接取消了阴影部分的点击事件 只保留了按钮的点击
Delegate.java 里面
@Override public void onClick(View v) { // dismiss(); }
虽然快速点击的时候可能看不到 消失的动画了 但是不会奔溃了
效果如图
下载地址 http://download.youkuaiyun.com/detail/qq_34709056/9858936