summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivek Sekhar <vsekhar@codeaurora.org>2015-07-21 15:01:45 -0700
committerjrizzoli <joey@cyanogenmoditalia.it>2015-08-28 13:15:46 +0200
commitd4de616426180df2f0607c964260e22d0bb74d19 (patch)
tree85da6f91a2289ad126a870dde8df3be4d4a6bceb
parentf210f91d773da892cb4d4a53467a41a06301d237 (diff)
downloadandroid_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.java84
-rw-r--r--src/com/android/browser/BrowserConfigBase.java2
-rw-r--r--src/com/android/browser/BrowserSwitches.java4
-rw-r--r--src/com/android/browser/BrowserWebView.java12
-rw-r--r--src/com/android/browser/NavScreen.java2
-rw-r--r--src/com/android/browser/NavigationBarBase.java2
-rw-r--r--src/com/android/browser/PhoneUi.java2
-rw-r--r--src/com/android/browser/SnapshotBar.java5
-rw-r--r--src/com/android/browser/Tab.java10
-rw-r--r--src/com/android/browser/TitleBar.java127
-rw-r--r--src/com/android/browser/UrlBarAutoShowManager.java144
-rw-r--r--src/com/android/browser/XLargeUi.java5
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