Merge "Fix bug 2838426 - timing issue with starting/finishing action bar context modes"

This commit is contained in:
Adam Powell
2010-07-14 14:25:48 -07:00
committed by Android (Google) Code Review

View File

@@ -70,6 +70,8 @@ public class ActionBarImpl extends ActionBar {
private int mContextDisplayMode;
private boolean mClosingContext;
final Handler mHandler = new Handler();
final Runnable mCloseContext = new Runnable() {
public void run() {
@@ -77,6 +79,7 @@ public class ActionBarImpl extends ActionBar {
if (mLowerContextView != null) {
mLowerContextView.removeAllViews();
}
mClosingContext = false;
}
};
@@ -195,6 +198,14 @@ public class ActionBarImpl extends ActionBar {
if (mContextMode != null) {
mContextMode.finish();
}
// Don't wait for the close context mode animation to finish.
if (mClosingContext) {
mAnimatorView.clearAnimation();
mHandler.removeCallbacks(mCloseContext);
mCloseContext.run();
}
mContextMode = new ContextMode(callback);
if (callback.onCreateContextMode(mContextMode, mContextMode.getMenu())) {
mContextMode.invalidate();
@@ -344,6 +355,7 @@ public class ActionBarImpl extends ActionBar {
mAnimatorView.setDisplayedChild(NORMAL_VIEW);
// Clear out the context mode views after the animation finishes
mClosingContext = true;
mHandler.postDelayed(mCloseContext, mAnimatorView.getOutAnimation().getDuration());
if (mLowerContextView != null && mLowerContextView.getVisibility() != View.GONE) {