Loading core/java/com/android/internal/app/ActionBarImpl.java +5 −2 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.app; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContainer; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarView; import com.android.internal.widget.ActionBarView; Loading Loading @@ -65,7 +66,7 @@ public class ActionBarImpl extends ActionBar { private Activity mActivity; private Activity mActivity; private Dialog mDialog; private Dialog mDialog; private FrameLayout mContainerView; private ActionBarContainer mContainerView; private ActionBarView mActionView; private ActionBarView mActionView; private ActionBarContextView mUpperContextView; private ActionBarContextView mUpperContextView; private LinearLayout mLowerContextView; private LinearLayout mLowerContextView; Loading Loading @@ -151,6 +152,7 @@ public class ActionBarImpl extends ActionBar { mContentView.setTranslationY(0); mContentView.setTranslationY(0); } } mContainerView.setVisibility(View.GONE); mContainerView.setVisibility(View.GONE); mContainerView.setTransitioning(false); mCurrentAnim = null; mCurrentAnim = null; } } Loading Loading @@ -205,7 +207,7 @@ public class ActionBarImpl extends ActionBar { com.android.internal.R.id.action_context_bar); com.android.internal.R.id.action_context_bar); mLowerContextView = (LinearLayout) decor.findViewById( mLowerContextView = (LinearLayout) decor.findViewById( com.android.internal.R.id.lower_action_context_bar); com.android.internal.R.id.lower_action_context_bar); mContainerView = (FrameLayout) decor.findViewById( mContainerView = (ActionBarContainer) decor.findViewById( com.android.internal.R.id.action_bar_container); com.android.internal.R.id.action_bar_container); if (mActionView == null || mUpperContextView == null || mContainerView == null) { if (mActionView == null || mUpperContextView == null || mContainerView == null) { Loading Loading @@ -533,6 +535,7 @@ public class ActionBarImpl extends ActionBar { if (mShowHideAnimationEnabled) { if (mShowHideAnimationEnabled) { mContainerView.setAlpha(1); mContainerView.setAlpha(1); mContainerView.setTransitioning(true); AnimatorSet anim = new AnimatorSet(); AnimatorSet anim = new AnimatorSet(); AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0)); AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0)); if (mContentView != null) { if (mContentView != null) { Loading core/java/com/android/internal/widget/ActionBarContainer.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.widget.FrameLayout; * @hide * @hide */ */ public class ActionBarContainer extends FrameLayout { public class ActionBarContainer extends FrameLayout { private boolean mIsTransitioning; public ActionBarContainer(Context context) { public ActionBarContainer(Context context) { this(context, null); this(context, null); } } Loading @@ -41,6 +43,25 @@ public class ActionBarContainer extends FrameLayout { a.recycle(); a.recycle(); } } /** * Set the action bar into a "transitioning" state. While transitioning * the bar will block focus and touch from all of its descendants. This * prevents the user from interacting with the bar while it is animating * in or out. * * @param isTransitioning true if the bar is currently transitioning, false otherwise. */ public void setTransitioning(boolean isTransitioning) { mIsTransitioning = isTransitioning; setDescendantFocusability(isTransitioning ? FOCUS_BLOCK_DESCENDANTS : FOCUS_AFTER_DESCENDANTS); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mIsTransitioning || super.onInterceptTouchEvent(ev); } @Override @Override public boolean onTouchEvent(MotionEvent ev) { public boolean onTouchEvent(MotionEvent ev) { super.onTouchEvent(ev); super.onTouchEvent(ev); Loading Loading
core/java/com/android/internal/app/ActionBarImpl.java +5 −2 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.internal.app; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuBuilder; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.MenuPopupHelper; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.view.menu.SubMenuBuilder; import com.android.internal.widget.ActionBarContainer; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarContextView; import com.android.internal.widget.ActionBarView; import com.android.internal.widget.ActionBarView; Loading Loading @@ -65,7 +66,7 @@ public class ActionBarImpl extends ActionBar { private Activity mActivity; private Activity mActivity; private Dialog mDialog; private Dialog mDialog; private FrameLayout mContainerView; private ActionBarContainer mContainerView; private ActionBarView mActionView; private ActionBarView mActionView; private ActionBarContextView mUpperContextView; private ActionBarContextView mUpperContextView; private LinearLayout mLowerContextView; private LinearLayout mLowerContextView; Loading Loading @@ -151,6 +152,7 @@ public class ActionBarImpl extends ActionBar { mContentView.setTranslationY(0); mContentView.setTranslationY(0); } } mContainerView.setVisibility(View.GONE); mContainerView.setVisibility(View.GONE); mContainerView.setTransitioning(false); mCurrentAnim = null; mCurrentAnim = null; } } Loading Loading @@ -205,7 +207,7 @@ public class ActionBarImpl extends ActionBar { com.android.internal.R.id.action_context_bar); com.android.internal.R.id.action_context_bar); mLowerContextView = (LinearLayout) decor.findViewById( mLowerContextView = (LinearLayout) decor.findViewById( com.android.internal.R.id.lower_action_context_bar); com.android.internal.R.id.lower_action_context_bar); mContainerView = (FrameLayout) decor.findViewById( mContainerView = (ActionBarContainer) decor.findViewById( com.android.internal.R.id.action_bar_container); com.android.internal.R.id.action_bar_container); if (mActionView == null || mUpperContextView == null || mContainerView == null) { if (mActionView == null || mUpperContextView == null || mContainerView == null) { Loading Loading @@ -533,6 +535,7 @@ public class ActionBarImpl extends ActionBar { if (mShowHideAnimationEnabled) { if (mShowHideAnimationEnabled) { mContainerView.setAlpha(1); mContainerView.setAlpha(1); mContainerView.setTransitioning(true); AnimatorSet anim = new AnimatorSet(); AnimatorSet anim = new AnimatorSet(); AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0)); AnimatorSet.Builder b = anim.play(ObjectAnimator.ofFloat(mContainerView, "alpha", 0)); if (mContentView != null) { if (mContentView != null) { Loading
core/java/com/android/internal/widget/ActionBarContainer.java +21 −0 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.widget.FrameLayout; * @hide * @hide */ */ public class ActionBarContainer extends FrameLayout { public class ActionBarContainer extends FrameLayout { private boolean mIsTransitioning; public ActionBarContainer(Context context) { public ActionBarContainer(Context context) { this(context, null); this(context, null); } } Loading @@ -41,6 +43,25 @@ public class ActionBarContainer extends FrameLayout { a.recycle(); a.recycle(); } } /** * Set the action bar into a "transitioning" state. While transitioning * the bar will block focus and touch from all of its descendants. This * prevents the user from interacting with the bar while it is animating * in or out. * * @param isTransitioning true if the bar is currently transitioning, false otherwise. */ public void setTransitioning(boolean isTransitioning) { mIsTransitioning = isTransitioning; setDescendantFocusability(isTransitioning ? FOCUS_BLOCK_DESCENDANTS : FOCUS_AFTER_DESCENDANTS); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return mIsTransitioning || super.onInterceptTouchEvent(ev); } @Override @Override public boolean onTouchEvent(MotionEvent ev) { public boolean onTouchEvent(MotionEvent ev) { super.onTouchEvent(ev); super.onTouchEvent(ev); Loading