diff options
author | Vivek Sekhar <vsekhar@codeaurora.org> | 2015-07-21 15:01:45 -0700 |
---|---|---|
committer | jrizzoli <joey@cyanogenmoditalia.it> | 2015-08-28 13:15:46 +0200 |
commit | d4de616426180df2f0607c964260e22d0bb74d19 (patch) | |
tree | 85da6f91a2289ad126a870dde8df3be4d4a6bceb | |
parent | f210f91d773da892cb4d4a53467a41a06301d237 (diff) | |
download | android_packages_apps_Gello-d4de616426180df2f0607c964260e22d0bb74d19.tar.gz android_packages_apps_Gello-d4de616426180df2f0607c964260e22d0bb74d19.tar.bz2 android_packages_apps_Gello-d4de616426180df2f0607c964260e22d0bb74d19.zip |
Titlebar cleanup
- Removed timer based Titlebar animation
- Always show Titlebar when keyboard is up
- Block webpage scroll when Titlebar is focused
- Added command line switch to disable top controls
- Fix rendering issue seen when user exits fullscreen video
Change-Id: I9d0afe7be907522b3678746c04049c2904118a4b
-rw-r--r-- | src/com/android/browser/BaseUi.java | 84 | ||||
-rw-r--r-- | src/com/android/browser/BrowserConfigBase.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/BrowserSwitches.java | 4 | ||||
-rw-r--r-- | src/com/android/browser/BrowserWebView.java | 12 | ||||
-rw-r--r-- | src/com/android/browser/NavScreen.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/NavigationBarBase.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/PhoneUi.java | 2 | ||||
-rw-r--r-- | src/com/android/browser/SnapshotBar.java | 5 | ||||
-rw-r--r-- | src/com/android/browser/Tab.java | 10 | ||||
-rw-r--r-- | src/com/android/browser/TitleBar.java | 127 | ||||
-rw-r--r-- | src/com/android/browser/UrlBarAutoShowManager.java | 144 | ||||
-rw-r--r-- | src/com/android/browser/XLargeUi.java | 5 |
12 files changed, 63 insertions, 336 deletions
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java index 3a05724b..2d53daa7 100644 --- a/src/com/android/browser/BaseUi.java +++ b/src/com/android/browser/BaseUi.java @@ -72,9 +72,6 @@ public abstract class BaseUi implements UI { ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER); - private static final int MSG_HIDE_TITLEBAR = 1; - public static final int HIDE_TITLEBAR_DELAY = 1500; // in ms - Activity mActivity; UiController mUiController; TabControl mTabControl; @@ -90,8 +87,6 @@ public abstract class BaseUi implements UI { private CustomViewCallback mCustomViewCallback; private int mOriginalOrientation; - private UrlBarAutoShowManager mUrlBarAutoShowManager; - private Toast mStopToast; // the default <video> poster @@ -131,7 +126,6 @@ public abstract class BaseUi implements UI { mContentView); mTitleBar.setProgress(100); mNavigationBar = mTitleBar.getNavigationBar(); - mUrlBarAutoShowManager = new UrlBarAutoShowManager(this); // install system ui visibility listeners mDecorView = mActivity.getWindow().getDecorView(); @@ -219,6 +213,12 @@ public abstract class BaseUi implements UI { return false; } + public boolean isFullScreen() { + if (mTabControl.getCurrentTab() != null) + return mTabControl.getCurrentTab().isTabFullScreen(); + return false; + } + @Override public boolean onMenuKey() { return false; @@ -281,7 +281,6 @@ public abstract class BaseUi implements UI { // block unnecessary focus change animations during tab switch mBlockFocusAnimations = true; - mHandler.removeMessages(MSG_HIDE_TITLEBAR); if ((tab != mActiveTab) && (mActiveTab != null)) { tabToRemove = mActiveTab; WebView web = mActiveTab.getWebView(); @@ -292,7 +291,6 @@ public abstract class BaseUi implements UI { mActiveTab = tab; BrowserWebView web = (BrowserWebView) mActiveTab.getWebView(); - updateUrlBarAutoShowManagerTarget(); attachTabToContentView(tab); if (web != null) { // Request focus on the top window. @@ -310,7 +308,6 @@ public abstract class BaseUi implements UI { scheduleRemoveTab(tabToRemove, tabToWaitFor); updateTabSecurityState(tab); - mTitleBar.setSkipTitleBarAnimations(false); } Tab mTabToRemove = null; @@ -378,13 +375,6 @@ public abstract class BaseUi implements UI { mTabToWaitFor = null; } - protected void updateUrlBarAutoShowManagerTarget() { - WebView web = mActiveTab != null ? mActiveTab.getWebView() : null; - if (web instanceof BrowserWebView) { - mUrlBarAutoShowManager.setTarget((BrowserWebView) web); - } - } - Tab getActiveTab() { return mActiveTab; } @@ -598,15 +588,14 @@ public abstract class BaseUi implements UI { } protected void showTitleBar() { - mHandler.removeMessages(MSG_HIDE_TITLEBAR); if (canShowTitleBar()) { - mTitleBar.show(); + mTitleBar.showTopControls(false); } } protected void hideTitleBar() { if (mTitleBar.isShowing()) { - mTitleBar.hide(); + mTitleBar.enableTopControls(false); } } @@ -871,36 +860,34 @@ public abstract class BaseUi implements UI { if (getWebView() != null) { BrowserWebView bwv = (BrowserWebView) getWebView(); if (fullScreen) { - //hide topbar - bwv.enableTopControls(false); + // hide titlebar mTitleBar.hideTopControls(true); } else { - bwv.enableTopControls(true); - //show the topbar - mTitleBar.showTopControls(true); - //enable for auto-hide + // show titlebar + mTitleBar.showTopControls(false); + // enable auto hide titlebar if (!mTitleBar.isFixed()) - mTitleBar.enableTopControls(true); + mTitleBar.enableTopControls(false); } } } public void translateTitleBar(float topControlsOffsetYPix) { - if (mTitleBar != null && !mInActionMode) { + if (mTitleBar == null || mTitleBar.isFixed()) + return; + if (!mInActionMode) { if (topControlsOffsetYPix != 0.0) { mTitleBar.setEnabled(false); } else { mTitleBar.setEnabled(true); } - if (!mTitleBar.isFixed()) { - float currentY = mTitleBar.getTranslationY(); - float height = mNavigationBar.getHeight(); - if ((height + currentY) <= 0 && (height + topControlsOffsetYPix) > 0) { - mTitleBar.requestLayout(); - } else if ((height + topControlsOffsetYPix) <= 0) { - topControlsOffsetYPix -= 1; - mTitleBar.getParent().requestTransparentRegion(mTitleBar); - } + float currentY = mTitleBar.getTranslationY(); + float height = mNavigationBar.getHeight(); + if ((height + currentY) <= 0 && (height + topControlsOffsetYPix) > 0) { + mTitleBar.requestLayout(); + } else if ((height + topControlsOffsetYPix) <= 0) { + topControlsOffsetYPix -= 1; + mTitleBar.getParent().requestTransparentRegion(mTitleBar); } // This was done to get HTML5 fullscreen API to work with fixed mode since // topcontrols are used to implement HTML5 fullscreen @@ -931,28 +918,6 @@ public abstract class BaseUi implements UI { return mActiveTab != null ? mActiveTab.inPageLoad() : false; } - /** - * Suggest to the UI that the title bar can be hidden. The UI will then - * decide whether or not to hide based off a number of factors, such - * as if the user is editing the URL bar or if the page is loading - */ - public void suggestHideTitleBar() { - if (!isLoading() && !isEditingUrl() && !mTitleBar.wantsToBeVisible() - && !mNavigationBar.isMenuShowing()) { - hideTitleBar(); - } - } - - protected final void showTitleBarForDuration() { - showTitleBarForDuration(HIDE_TITLEBAR_DELAY); - } - - protected final void showTitleBarForDuration(long duration) { - showTitleBar(); - Message msg = Message.obtain(mHandler, MSG_HIDE_TITLEBAR); - mHandler.sendMessageDelayed(msg, duration); - } - protected void setMenuItemVisibility(Menu menu, int id, boolean visibility) { MenuItem item = menu.findItem(id); @@ -965,9 +930,6 @@ public abstract class BaseUi implements UI { @Override public void handleMessage(Message msg) { - if (msg.what == MSG_HIDE_TITLEBAR) { - suggestHideTitleBar(); - } BaseUi.this.handleMessage(msg); } }; diff --git a/src/com/android/browser/BrowserConfigBase.java b/src/com/android/browser/BrowserConfigBase.java index 495e7350..e2ef7797 100644 --- a/src/com/android/browser/BrowserConfigBase.java +++ b/src/com/android/browser/BrowserConfigBase.java @@ -83,10 +83,8 @@ abstract class BrowserConfigBase { public void initCommandLineSwitches() { //SWE-hide-title-bar - enable following flags - BrowserCommandLine.appendSwitch(BrowserSwitches.ENABLE_TOP_CONTROLS); BrowserCommandLine.appendSwitchWithValue(BrowserSwitches.TOP_CONTROLS_SHOW_THRESHOLD, "0.5"); BrowserCommandLine.appendSwitchWithValue(BrowserSwitches.TOP_CONTROLS_HIDE_THRESHOLD, "0.5"); - BrowserCommandLine.appendSwitch(BrowserSwitches.ENABLE_SWE); // Allow to override UserAgent overrideUserAgent(); diff --git a/src/com/android/browser/BrowserSwitches.java b/src/com/android/browser/BrowserSwitches.java index 137b2599..1a9767e4 100644 --- a/src/com/android/browser/BrowserSwitches.java +++ b/src/com/android/browser/BrowserSwitches.java @@ -50,7 +50,7 @@ public class BrowserSwitches { public static final String ENABLE_SWE = "enabled-swe"; - public static final String ENABLE_TOP_CONTROLS = "enable-top-controls-position-calculation"; + public static final String DISABLE_TOP_CONTROLS = "disable-top-controls"; public static final String TOP_CONTROLS_HIDE_THRESHOLD = "top-controls-hide-threshold"; @@ -68,4 +68,4 @@ public class BrowserSwitches { public static final String AUTO_UPDATE_SERVER_CMD = "auto-update-server"; -}
\ No newline at end of file +} diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java index 0159cb71..9aa044c6 100644 --- a/src/com/android/browser/BrowserWebView.java +++ b/src/com/android/browser/BrowserWebView.java @@ -21,6 +21,7 @@ import android.graphics.Canvas; import android.content.res.Resources; import android.util.AttributeSet; import android.view.KeyEvent; +import android.view.MotionEvent; import android.view.View; import org.codeaurora.swe.WebChromeClient; import org.codeaurora.swe.WebView; @@ -161,6 +162,17 @@ public class BrowserWebView extends WebView implements WebView.TitleBarDelegate } @Override + public boolean onTouchEvent(MotionEvent event) { + // block touch event if title bar is selected + if (mTitleBar.isEditingUrl()) { + requestFocus(); + return true; + } + else + return super.onTouchEvent(event); + } + + @Override public void onScrollChanged(int l, int t, int oldl, int oldt) { // NOTE: this function seems to not be called when the WebView is scrolled (it may be fine) super.onScrollChanged(l, t, oldl, oldt); diff --git a/src/com/android/browser/NavScreen.java b/src/com/android/browser/NavScreen.java index e7c4be6f..80201da9 100644 --- a/src/com/android/browser/NavScreen.java +++ b/src/com/android/browser/NavScreen.java @@ -243,10 +243,8 @@ public class NavScreen extends RelativeLayout mTabViews.remove(tab); } else if (tabview.isTitle(v)) { switchToTab(tab); - mUi.getTitleBar().setSkipTitleBarAnimations(true); close(position, false); mUi.editUrl(false, true); - mUi.getTitleBar().setSkipTitleBarAnimations(false); } else if (tabview.isWebView(v)) { close(position); } diff --git a/src/com/android/browser/NavigationBarBase.java b/src/com/android/browser/NavigationBarBase.java index f063cdbc..7de1a5d4 100644 --- a/src/com/android/browser/NavigationBarBase.java +++ b/src/com/android/browser/NavigationBarBase.java @@ -466,7 +466,6 @@ public class NavigationBarBase extends LinearLayout implements setDisplayTitle(currentTab.getUrl()); } } - mBaseUi.suggestHideTitleBar(); } mUrlInput.clearNeedsUpdate(); } @@ -819,7 +818,6 @@ public class NavigationBarBase extends LinearLayout implements private void onMenuHidden() { mOverflowMenuShowing = false; - mBaseUi.showTitleBarForDuration(); } diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java index 91f0d3ff..063a21c3 100644 --- a/src/com/android/browser/PhoneUi.java +++ b/src/com/android/browser/PhoneUi.java @@ -138,8 +138,6 @@ public class PhoneUi extends BaseUi { @Override public void setActiveTab(final Tab tab) { - mTitleBar.cancelTitleBarAnimation(true); - mTitleBar.setSkipTitleBarAnimations(true); super.setActiveTab(tab); //if at Nav screen show, detach tab like what showNavScreen() do. diff --git a/src/com/android/browser/SnapshotBar.java b/src/com/android/browser/SnapshotBar.java index 29f2a902..344e732b 100644 --- a/src/com/android/browser/SnapshotBar.java +++ b/src/com/android/browser/SnapshotBar.java @@ -44,7 +44,7 @@ import java.util.Date; public class SnapshotBar extends LinearLayout implements OnClickListener { private static final int MSG_SHOW_TITLE = 1; - private static final long DURATION_SHOW_DATE = BaseUi.HIDE_TITLEBAR_DELAY; + private static final long DURATION_SHOW_DATE = 1500; private ImageView mFavicon; private ImageView mSnapshoticon; @@ -100,7 +100,6 @@ public class SnapshotBar extends LinearLayout implements OnClickListener { if (msg.what == MSG_SHOW_TITLE) { mIsAnimating = false; showTitle(); - mTitleBar.getUi().showTitleBarForDuration(); } } }; @@ -209,7 +208,7 @@ public class SnapshotBar extends LinearLayout implements OnClickListener { } else if (mToggleContainer == v && !mIsAnimating) { mIsAnimating = true; showDate(); - mTitleBar.getUi().showTitleBar(); + mTitleBar.showTopControls(false); Message m = mHandler.obtainMessage(MSG_SHOW_TITLE); mHandler.sendMessageDelayed(m, DURATION_SHOW_DATE); } diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java index 3fc6eb55..36aae4c5 100644 --- a/src/com/android/browser/Tab.java +++ b/src/com/android/browser/Tab.java @@ -707,10 +707,16 @@ class Tab implements PictureListener { @Override public void onKeyboardStateChange(boolean popup) { + boolean keyboardWasShowing = isKeyboardShowing(); mIsKeyboardUp = popup; + Controller controller = (Controller)mWebViewController; + BaseUi ui = (BaseUi) controller.getUi(); + // lock the title bar + if (popup) + ui.getTitleBar().showTopControls(true); + if (keyboardWasShowing && popup) + ui.getTitleBar().enableTopControls(true); if (BrowserSettings.getInstance().useFullscreen()) { - Controller controller = (Controller) mWebViewController; - BaseUi ui = (BaseUi) controller.getUi(); ui.forceDisableFullscreenMode(popup); } } diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java index 3c2b5f1d..03c207a2 100644 --- a/src/com/android/browser/TitleBar.java +++ b/src/com/android/browser/TitleBar.java @@ -16,9 +16,6 @@ package com.android.browser; -import android.animation.Animator; -import android.animation.Animator.AnimatorListener; -import android.animation.ObjectAnimator; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; @@ -29,7 +26,8 @@ import android.view.ViewGroup; import android.view.ViewStub; import android.view.ViewTreeObserver; import android.view.accessibility.AccessibilityManager; -import android.view.animation.DecelerateInterpolator; + +import org.codeaurora.swe.BrowserCommandLine; import org.codeaurora.swe.WebView; import android.widget.FrameLayout; @@ -54,8 +52,6 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL //state private boolean mShowing; private boolean mInLoad; - private boolean mSkipTitleBarAnimations; - private Animator mTitleBarAnimator; private boolean mIsFixedTitleBar; private float mCurrentTranslationY; private boolean mUpdateTranslationY = false; @@ -127,7 +123,8 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL } private void setFixedTitleBar() { - boolean isFixed = !getContext().getResources().getBoolean(R.bool.hide_title); + boolean isFixed = !getContext().getResources().getBoolean(R.bool.hide_title) || + BrowserCommandLine.hasSwitch(BrowserSwitches.DISABLE_TOP_CONTROLS); isFixed |= mAccessibilityManager.isEnabled() && mAccessibilityManager.isTouchExplorationEnabled(); @@ -135,9 +132,7 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL ViewGroup parent = (ViewGroup)getParent(); if (mIsFixedTitleBar == isFixed && parent != null) return; mIsFixedTitleBar = isFixed; - setSkipTitleBarAnimations(true); - show(); - setSkipTitleBarAnimations(false); + showTopControls(false); if (parent != null) { parent.removeView(this); } @@ -161,98 +156,10 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL } } - void setSkipTitleBarAnimations(boolean skip) { - mSkipTitleBarAnimations = skip; - } - - void setupTitleBarAnimator(Animator animator) { - Resources res = getContext().getResources(); - int duration = res.getInteger(R.integer.titlebar_animation_duration); - animator.setInterpolator(new DecelerateInterpolator( - ANIM_TITLEBAR_DECELERATE)); - animator.setDuration(duration); - } - - //Disable stock autohide behavior in favor of top controls - private static final boolean bOldStyleAutoHideDisabled = true; - void show() { - cancelTitleBarAnimation(false); - if (mSkipTitleBarAnimations) { - this.setVisibility(View.VISIBLE); - this.setTranslationY(0); - // reaffirm top-controls - if (isFixed() || isInLoad()) - showTopControls(false); - else - enableTopControls(true); - } else if (!bOldStyleAutoHideDisabled) { - int visibleHeight = getVisibleTitleHeight(); - float startPos = (-getEmbeddedHeight() + visibleHeight); - if (getTranslationY() != 0) { - startPos = Math.max(startPos, getTranslationY()); - } - mTitleBarAnimator = ObjectAnimator.ofFloat(this, - "translationY", - startPos, 0); - setupTitleBarAnimator(mTitleBarAnimator); - mTitleBarAnimator.start(); - } - - mShowing = true; - } - - void hide() { - if (mIsFixedTitleBar || bOldStyleAutoHideDisabled) return; - if (!mSkipTitleBarAnimations) { - cancelTitleBarAnimation(false); - int visibleHeight = getVisibleTitleHeight(); - mTitleBarAnimator = ObjectAnimator.ofFloat(this, - "translationY", getTranslationY(), - (-getEmbeddedHeight() + visibleHeight)); - mTitleBarAnimator.addListener(mHideTileBarAnimatorListener); - setupTitleBarAnimator(mTitleBarAnimator); - mTitleBarAnimator.start(); - } else { - onScrollChanged(); - } - mShowing = false; - } - boolean isShowing() { return mShowing; } - void cancelTitleBarAnimation(boolean reset) { - if (mTitleBarAnimator != null) { - mTitleBarAnimator.cancel(); - mTitleBarAnimator = null; - } - if (reset) { - setTranslationY(0); - } - } - - private AnimatorListener mHideTileBarAnimatorListener = new AnimatorListener() { - - @Override - public void onAnimationStart(Animator animation) { - } - - @Override - public void onAnimationRepeat(Animator animation) { - } - - @Override - public void onAnimationEnd(Animator animation) { - // update position - onScrollChanged(); - } - - @Override - public void onAnimationCancel(Animator animation) { - } - }; - private int getVisibleTitleHeight() { Tab tab = mBaseUi.getActiveTab(); WebView webview = tab != null ? tab.getWebView() : null; @@ -260,20 +167,28 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL } protected void hideTopControls(boolean animate) { + if (mIsFixedTitleBar) + return; Tab tab = mBaseUi.getActiveTab(); WebView view = tab != null ? tab.getWebView() : null; - if (view != null) + if (view != null) { view.updateTopControls(true, false, animate); + } + mShowing = false; } protected void showTopControls(boolean animate) { Tab tab = mBaseUi.getActiveTab(); WebView view = tab != null ? tab.getWebView() : null; - if (view != null) + if (view != null) { view.updateTopControls(false, true, animate); + } + mShowing = true; } protected void enableTopControls(boolean animate) { + if (mIsFixedTitleBar) + return; Tab tab = mBaseUi.getActiveTab(); WebView view = tab != null ? tab.getWebView() : null; if (view != null) @@ -290,15 +205,8 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL mProgress.setVisibility(View.GONE); mInLoad = false; mNavBar.onProgressStopped(); - // check if needs to be hidden - if (!isEditingUrl() && !wantsToBeVisible()) { - mBaseUi.showTitleBarForDuration(); - } - //onPageFinished - showTopControls(false); - if(!isFixed()) - enableTopControls(true); + enableTopControls(true); } else { if (!mInLoad) { @@ -310,9 +218,6 @@ public class TitleBar extends FrameLayout implements ViewTreeObserver.OnPreDrawL } mProgress.setProgress(newProgress * PageProgressView.MAX_PROGRESS / PROGRESS_MAX); - if (!mShowing) { - show(); - } showTopControls(false); } } diff --git a/src/com/android/browser/UrlBarAutoShowManager.java b/src/com/android/browser/UrlBarAutoShowManager.java deleted file mode 100644 index 4ef1765c..00000000 --- a/src/com/android/browser/UrlBarAutoShowManager.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (C) 2011 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.browser; - -import android.os.SystemClock; -import android.view.MotionEvent; -import android.view.View; -import android.view.View.OnTouchListener; -import android.view.ViewConfiguration; -import org.codeaurora.swe.WebView; - -import com.android.browser.BrowserWebView.OnScrollChangedListener; - -/** - * Helper class to manage when to show the URL bar based off of touch - * input, and when to begin the hide timer. - */ -public class UrlBarAutoShowManager implements OnTouchListener, - OnScrollChangedListener { - - private static float V_TRIGGER_ANGLE = .9f; - private static long SCROLL_TIMEOUT_DURATION = 150; - private static long IGNORE_INTERVAL = 250; - - private BrowserWebView mTarget; - private BaseUi mUi; - - private int mSlop; - - private float mStartTouchX; - private float mStartTouchY; - private boolean mIsTracking; - private boolean mHasTriggered; - private long mLastScrollTime; - private long mTriggeredTime; - private boolean mIsScrolling; - - public UrlBarAutoShowManager(BaseUi ui) { - mUi = ui; - ViewConfiguration config = ViewConfiguration.get(mUi.getActivity()); - mSlop = config.getScaledTouchSlop() * 2; - } - - public void setTarget(BrowserWebView v) { - if (mTarget == v) return; - - if (mTarget != null) { - mTarget.setOnTouchListener(null); - mTarget.setOnScrollChangedListener(null); - } - mTarget = v; - if (mTarget != null) { - mTarget.setOnTouchListener(this); - mTarget.setOnScrollChangedListener(this); - } - } - - @Override - public void onScrollChanged(int l, int t, int oldl, int oldt) { - mLastScrollTime = SystemClock.uptimeMillis(); - mIsScrolling = true; - if (t != 0) { - // If it is showing, extend it - if (mUi.isTitleBarShowing()) { - long remaining = mLastScrollTime - mTriggeredTime; - remaining = Math.max(BaseUi.HIDE_TITLEBAR_DELAY - remaining, - SCROLL_TIMEOUT_DURATION); - mUi.showTitleBarForDuration(remaining); - } - } else { - mUi.suggestHideTitleBar(); - } - } - - void stopTracking() { - if (mIsTracking) { - mIsTracking = false; - mIsScrolling = false; - if (mUi.isTitleBarShowing()) { - mUi.showTitleBarForDuration(); - } - } - } - - @Override - public boolean onTouch(View v, MotionEvent event) { - if (event.getPointerCount() > 1) { - stopTracking(); - } - switch (event.getAction()) { - case MotionEvent.ACTION_DOWN: - if (!mIsTracking && event.getPointerCount() == 1) { - long sinceLastScroll = - SystemClock.uptimeMillis() - mLastScrollTime; - if (sinceLastScroll < IGNORE_INTERVAL) { - break; - } - mStartTouchY = event.getY(); - mStartTouchX = event.getX(); - mIsTracking = true; - mHasTriggered = false; - } - break; - case MotionEvent.ACTION_MOVE: - if (mIsTracking && !mHasTriggered) { - WebView web = (WebView) v; - float dy = event.getY() - mStartTouchY; - float ady = Math.abs(dy); - float adx = Math.abs(event.getX() - mStartTouchX); - if (ady > mSlop) { - mHasTriggered = true; - float angle = (float) Math.atan2(ady, adx); - if (dy > mSlop && angle > V_TRIGGER_ANGLE - && !mUi.isTitleBarShowing() - && (web.getVisibleTitleHeight() == 0 - || (!mIsScrolling && web.getScrollY() > 0))) { - mTriggeredTime = SystemClock.uptimeMillis(); - mUi.showTitleBar(); - } - } - } - break; - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: - stopTracking(); - break; - } - return false; - } - -} diff --git a/src/com/android/browser/XLargeUi.java b/src/com/android/browser/XLargeUi.java index f4a3f5b0..92e30ad2 100644 --- a/src/com/android/browser/XLargeUi.java +++ b/src/com/android/browser/XLargeUi.java @@ -176,8 +176,6 @@ public class XLargeUi extends BaseUi { @Override public void setActiveTab(final Tab tab) { - mTitleBar.cancelTitleBarAnimation(true); - mTitleBar.setSkipTitleBarAnimations(true); super.setActiveTab(tab); BrowserWebView view = (BrowserWebView) tab.getWebView(); // TabControl.setCurrentTab has been called before this, @@ -196,11 +194,8 @@ public class XLargeUi extends BaseUi { @Override public void removeTab(Tab tab) { - mTitleBar.cancelTitleBarAnimation(true); - mTitleBar.setSkipTitleBarAnimations(true); super.removeTab(tab); mTabBar.onRemoveTab(tab); - mTitleBar.setSkipTitleBarAnimations(false); } @Override |