Hide the title bar when zoomed in.
This commit is contained in:
@ -70,6 +70,9 @@ class CallbackProxy extends Handler {
|
|||||||
private final WebBackForwardList mBackForwardList;
|
private final WebBackForwardList mBackForwardList;
|
||||||
// Used to call startActivity during url override.
|
// Used to call startActivity during url override.
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
|
// Stores the URL being loaded and the viewing mode to switch into when
|
||||||
|
// the URL finishes loading.
|
||||||
|
private ChangeViewModeOnFinishedLoad mChange;
|
||||||
|
|
||||||
// Message Ids
|
// Message Ids
|
||||||
private static final int PAGE_STARTED = 100;
|
private static final int PAGE_STARTED = 100;
|
||||||
@ -176,6 +179,37 @@ class CallbackProxy extends Handler {
|
|||||||
return mBackForwardList;
|
return mBackForwardList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell the host application that the WebView has changed viewing modes.
|
||||||
|
* @param toZoomedOut If true, the WebView has zoomed out so that the page
|
||||||
|
* fits the screen. If false, it is zoomed to the setting
|
||||||
|
* specified by the user.
|
||||||
|
*/
|
||||||
|
/* package */ void uiOnChangeViewingMode(boolean toZoomOverview) {
|
||||||
|
if (mWebChromeClient != null) {
|
||||||
|
mWebChromeClient.onChangeViewingMode(toZoomOverview);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class ChangeViewModeOnFinishedLoad {
|
||||||
|
boolean mToZoomOverView;
|
||||||
|
String mOriginalUrl;
|
||||||
|
ChangeViewModeOnFinishedLoad(boolean toZoomOverview,
|
||||||
|
String originalUrl) {
|
||||||
|
mToZoomOverView = toZoomOverview;
|
||||||
|
mOriginalUrl = originalUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Keep track of the url and the viewing mode to change into. If/when that
|
||||||
|
* url finishes loading, this will change the viewing mode.
|
||||||
|
*/
|
||||||
|
/* package */ void uiChangeViewingModeOnFinishedLoad(
|
||||||
|
boolean toZoomOverview, String originalUrl) {
|
||||||
|
if (mWebChromeClient == null) return;
|
||||||
|
mChange = new ChangeViewModeOnFinishedLoad(toZoomOverview, originalUrl);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Called by the UI side. Calling overrideUrlLoading from the WebCore
|
* Called by the UI side. Calling overrideUrlLoading from the WebCore
|
||||||
* side will post a message to call this method.
|
* side will post a message to call this method.
|
||||||
@ -237,6 +271,15 @@ class CallbackProxy extends Handler {
|
|||||||
if (mWebViewClient != null) {
|
if (mWebViewClient != null) {
|
||||||
mWebViewClient.onPageFinished(mWebView, (String) msg.obj);
|
mWebViewClient.onPageFinished(mWebView, (String) msg.obj);
|
||||||
}
|
}
|
||||||
|
if (mChange != null) {
|
||||||
|
if (mWebView.getOriginalUrl().equals(mChange.mOriginalUrl)) {
|
||||||
|
uiOnChangeViewingMode(mChange.mToZoomOverView);
|
||||||
|
} else {
|
||||||
|
// The user has gone to a different page, so there is
|
||||||
|
// no need to hang on to the old object.
|
||||||
|
mChange = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECEIVED_ICON:
|
case RECEIVED_ICON:
|
||||||
|
@ -22,6 +22,15 @@ import android.view.View;
|
|||||||
|
|
||||||
public class WebChromeClient {
|
public class WebChromeClient {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell the host application that the WebView has changed viewing modes.
|
||||||
|
* @param toZoomedOut If true, the WebView has zoomed out so that the page
|
||||||
|
* fits the screen. If false, it is zoomed to the setting
|
||||||
|
* specified by the user.
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public void onChangeViewingMode(boolean toZoomedOut) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tell the host application the current progress of loading a page.
|
* Tell the host application the current progress of loading a page.
|
||||||
* @param view The WebView that initiated the callback.
|
* @param view The WebView that initiated the callback.
|
||||||
|
@ -521,6 +521,7 @@ public class WebView extends AbsoluteLayout
|
|||||||
// follow the links. Double tap will toggle between zoom overview mode and
|
// follow the links. Double tap will toggle between zoom overview mode and
|
||||||
// the last zoom scale.
|
// the last zoom scale.
|
||||||
boolean mInZoomOverview = false;
|
boolean mInZoomOverview = false;
|
||||||
|
|
||||||
// ideally mZoomOverviewWidth should be mContentWidth. But sites like espn,
|
// ideally mZoomOverviewWidth should be mContentWidth. But sites like espn,
|
||||||
// engadget always have wider mContentWidth no matter what viewport size is.
|
// engadget always have wider mContentWidth no matter what viewport size is.
|
||||||
int mZoomOverviewWidth = WebViewCore.DEFAULT_VIEWPORT_WIDTH;
|
int mZoomOverviewWidth = WebViewCore.DEFAULT_VIEWPORT_WIDTH;
|
||||||
@ -4687,6 +4688,7 @@ public class WebView extends AbsoluteLayout
|
|||||||
mZoomCenterX = mLastTouchX;
|
mZoomCenterX = mLastTouchX;
|
||||||
mZoomCenterY = mLastTouchY;
|
mZoomCenterY = mLastTouchY;
|
||||||
mInZoomOverview = !mInZoomOverview;
|
mInZoomOverview = !mInZoomOverview;
|
||||||
|
mCallbackProxy.uiOnChangeViewingMode(mInZoomOverview);
|
||||||
if (mInZoomOverview) {
|
if (mInZoomOverview) {
|
||||||
if (getSettings().getBuiltInZoomControls()) {
|
if (getSettings().getBuiltInZoomControls()) {
|
||||||
if (mZoomButtonsController.isVisible()) {
|
if (mZoomButtonsController.isVisible()) {
|
||||||
@ -5034,6 +5036,14 @@ public class WebView extends AbsoluteLayout
|
|||||||
mInZoomOverview = ENABLE_DOUBLETAP_ZOOM
|
mInZoomOverview = ENABLE_DOUBLETAP_ZOOM
|
||||||
&& settings.getLoadWithOverviewMode();
|
&& settings.getLoadWithOverviewMode();
|
||||||
}
|
}
|
||||||
|
mCallbackProxy.uiOnChangeViewingMode(true);
|
||||||
|
if (!mInZoomOverview) {
|
||||||
|
// We are going to start zoomed in. However, we
|
||||||
|
// truly want to show the title bar, and then hide
|
||||||
|
// it once the page has loaded
|
||||||
|
mCallbackProxy.uiChangeViewingModeOnFinishedLoad(
|
||||||
|
false, getOriginalUrl());
|
||||||
|
}
|
||||||
setNewZoomScale(mLastScale, false);
|
setNewZoomScale(mLastScale, false);
|
||||||
setContentScrollTo(restoreState.mScrollX,
|
setContentScrollTo(restoreState.mScrollX,
|
||||||
restoreState.mScrollY);
|
restoreState.mScrollY);
|
||||||
|
Reference in New Issue
Block a user