diff options
| author | Shimeng (Simon) Wang <swang@google.com> | 2010-08-13 13:56:42 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-08-13 13:56:42 -0700 |
| commit | 74521b17fed521ca821061c3e94287859c0d3cc4 (patch) | |
| tree | 3e256e761977a7966134f052c24ee38f7ff9a28c | |
| parent | 8e7b1f750e1b678e4ad9f75e042e40622c77b3e7 (diff) | |
| parent | dde858cbb6dd96e621616b20bb5a6866565b4874 (diff) | |
| download | frameworks_base-74521b17fed521ca821061c3e94287859c0d3cc4.zip frameworks_base-74521b17fed521ca821061c3e94287859c0d3cc4.tar.gz frameworks_base-74521b17fed521ca821061c3e94287859c0d3cc4.tar.bz2 | |
Merge "Change scale for large screen reading when double tapped."
| -rw-r--r-- | core/java/android/webkit/WebView.java | 6 | ||||
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 26 |
2 files changed, 22 insertions, 10 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 32009be..9f60f44 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3557,11 +3557,11 @@ public class WebView extends AbsoluteLayout InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - // bring it back to the default scale so that user can enter text - boolean zoom = mZoomManager.getScale() < mZoomManager.getDefaultScale(); + // bring it back to the reading level scale so that user can enter text + boolean zoom = mZoomManager.getScale() < mZoomManager.getReadingLevelScale(); if (zoom) { mZoomManager.setZoomCenter(mLastTouchX, mLastTouchY); - mZoomManager.setZoomScale(mZoomManager.getDefaultScale(), false); + mZoomManager.setZoomScale(mZoomManager.getReadingLevelScale(), false); } if (isTextView) { rebuildWebTextView(); diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 7f7f46e..8033c9c 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -56,6 +56,13 @@ class ZoomManager { private ZoomControlExternal mExternalZoomControl; /* + * For large screen devices, the defaultScale usually set to 1.0 and + * equal to the overview scale, to differentiate the zoom level for double tapping, + * a minimum reading level scale is used. + */ + private static final float MIN_READING_LEVEL_SCALE = 1.5f; + + /* * The scale factors that determine the upper and lower bounds for the * default zoom scale. */ @@ -245,6 +252,10 @@ class ZoomManager { return mDefaultScale; } + public final float getReadingLevelScale() { + return Math.max(mDefaultScale, MIN_READING_LEVEL_SCALE); + } + public final float getInvDefaultScale() { return mInvDefaultScale; } @@ -337,9 +348,9 @@ class ZoomManager { mInitialScrollX = mWebView.getScrollX(); mInitialScrollY = mWebView.getScrollY(); - // snap to DEFAULT_SCALE if it is close - if (!exceedsMinScaleIncrement(scale, mDefaultScale)) { - scale = mDefaultScale; + // snap to reading level scale if it is close + if (!exceedsMinScaleIncrement(scale, getReadingLevelScale())) { + scale = getReadingLevelScale(); } setZoomScale(scale, reflowText); @@ -535,7 +546,7 @@ class ZoomManager { } else if (!mInZoomOverview) { zoomToOverview(); } else { - zoomToDefaultLevel(); + zoomToReadingLevel(); } } @@ -563,7 +574,8 @@ class ZoomManager { startZoomAnimation(getZoomOverviewScale(), true); } - private void zoomToDefaultLevel() { + private void zoomToReadingLevel() { + final float readingScale = getReadingLevelScale(); int left = mWebView.nativeGetBlockLeftEdge(mAnchorX, mAnchorY, mActualScale); if (left != WebView.NO_LEFTEDGE) { // add a 5pt padding to the left edge. @@ -572,13 +584,13 @@ class ZoomManager { // Re-calculate the zoom center so that the new scroll x will be // on the left edge. if (viewLeft > 0) { - mZoomCenterX = viewLeft * mDefaultScale / (mDefaultScale - mActualScale); + mZoomCenterX = viewLeft * readingScale / (readingScale - mActualScale); } else { mWebView.scrollBy(viewLeft, 0); mZoomCenterX = 0; } } - startZoomAnimation(mDefaultScale, true); + startZoomAnimation(readingScale, true); } public void updateMultiTouchSupport(Context context) { |
