diff --git a/src/com/android/email/Preferences.java b/src/com/android/email/Preferences.java index 4e40e6309..b10cf131c 100644 --- a/src/com/android/email/Preferences.java +++ b/src/com/android/email/Preferences.java @@ -47,13 +47,15 @@ public class Preferences { // "move to older" was the behavior on older versions. public static final int AUTO_ADVANCE_DEFAULT = AUTO_ADVANCE_OLDER; + // The following constants are used as offsets into TEXT_ZOOM_ARRAY (below) public static final int TEXT_ZOOM_TINY = 0; public static final int TEXT_ZOOM_SMALL = 1; public static final int TEXT_ZOOM_NORMAL = 2; public static final int TEXT_ZOOM_LARGE = 3; public static final int TEXT_ZOOM_HUGE = 4; - // "large" will be the default - public static final int TEXT_ZOOM_DEFAULT = TEXT_ZOOM_LARGE; + // "normal" will be the default + public static final int TEXT_ZOOM_DEFAULT = TEXT_ZOOM_NORMAL; + public static final float[] TEXT_ZOOM_ARRAY = new float[] {0.8f, 0.9f, 1.0f, 1.2f, 1.5f}; private static Preferences sPreferences; diff --git a/src/com/android/email/activity/MessageViewFragmentBase.java b/src/com/android/email/activity/MessageViewFragmentBase.java index 0250fe7a4..9cecfc6f5 100644 --- a/src/com/android/email/activity/MessageViewFragmentBase.java +++ b/src/com/android/email/activity/MessageViewFragmentBase.java @@ -502,18 +502,9 @@ public abstract class MessageViewFragmentBase extends Fragment implements View.O mMessageContentView.clearView(); // Dynamic configuration of WebView - WebSettings.TextSize textZoom; - switch (Preferences.getPreferences(mContext).getTextZoom()) { - case Preferences.TEXT_ZOOM_TINY: textZoom = WebSettings.TextSize.SMALLEST; break; - case Preferences.TEXT_ZOOM_SMALL: textZoom = WebSettings.TextSize.SMALLER; break; - case Preferences.TEXT_ZOOM_NORMAL: textZoom = WebSettings.TextSize.NORMAL; break; - case Preferences.TEXT_ZOOM_LARGE: textZoom = WebSettings.TextSize.LARGER; break; - case Preferences.TEXT_ZOOM_HUGE: textZoom = WebSettings.TextSize.LARGEST; break; - default: textZoom = WebSettings.TextSize.NORMAL; break; - } final WebSettings settings = mMessageContentView.getSettings(); - settings.setTextSize(textZoom); settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); + setTextZoom(); } mAttachmentsScroll.scrollTo(0, 0); mInviteScroll.scrollTo(0, 0); @@ -522,6 +513,20 @@ public abstract class MessageViewFragmentBase extends Fragment implements View.O initContactStatusViews(); } + /** + * Sets the zoom value which is a combination of the user setting + * (tiny, small, normal, large, huge) and the device density. The intention + * is for the text to be physically equal in size over different density + * screens. + */ + private void setTextZoom() { + float density = mContext.getResources().getDisplayMetrics().density; + int zoom = Preferences.getPreferences(mContext).getTextZoom(); + float textZoom = Preferences.TEXT_ZOOM_ARRAY[zoom] * density; + + mMessageContentView.setInitialScale((int) (textZoom * 100)); + } + private void initContactStatusViews() { mContactStatusState = CONTACT_STATUS_STATE_UNLOADED; mQuickContactLookupUri = null;