diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2013-04-04 18:15:00 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-04-05 16:26:07 +0200 |
commit | 439a6fec84a62b9d166b84dc7574ddc250a38bfb (patch) | |
tree | 8cc00b5b3ce8f2af15bc9ba96c3cdd3987e03892 /src/android | |
parent | 722798a359761a1eb635d18547b076615f192508 (diff) |
Android: set logicalDpi based on DisplayMetrics.scaledDensity
The mathematically correct way would be to set logicalDPi to
160*scaledDensity, but then a 12 pt font would be gigantic. On
iOS, we use a factor of 72 to be compatible with the native APIs,
but that means that a 12 pt font is very small.
A factor of 100 means that desktop apps look reasonable by default.
Task-number: QTBUG-29674
Change-Id: I607f110150fb95685a6980b92f6f92f2b489f959
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/android')
3 files changed, 14 insertions, 7 deletions
diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java index b6e6e3397e..c1fe8920f5 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java @@ -476,7 +476,7 @@ public class QtActivityDelegate m_activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); QtNative.setApplicationDisplayMetrics(metrics.widthPixels, metrics.heightPixels, metrics.widthPixels, metrics.heightPixels, - metrics.xdpi, metrics.ydpi); + metrics.xdpi, metrics.ydpi, metrics.scaledDensity); } m_layout = new QtLayout(m_activity); m_surface = new QtSurface(m_activity, 0); diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java index 7cb3fdff45..4586ae2002 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java @@ -72,6 +72,7 @@ public class QtNative private static int m_displayMetricsDesktopHeightPixels = 0; private static double m_displayMetricsXDpi = .0; private static double m_displayMetricsYDpi = .0; + private static double m_displayMetricsScaledDensity = 1.0; private static int m_oldx, m_oldy; private static final int m_moveThreshold = 0; private static ClipboardManager m_clipboardManager = null; @@ -195,7 +196,8 @@ public class QtNative m_displayMetricsDesktopWidthPixels, m_displayMetricsDesktopHeightPixels, m_displayMetricsXDpi, - m_displayMetricsYDpi); + m_displayMetricsYDpi, + m_displayMetricsScaledDensity); if (params.length() > 0) params = "\t" + params; startQtApplication(f.getAbsolutePath() + "\t" + params, environment); @@ -209,7 +211,8 @@ public class QtNative int desktopWidthPixels, int desktopHeightPixels, double XDpi, - double YDpi) + double YDpi, + double scaledDensity) { /* Fix buggy dpi report */ if (XDpi < android.util.DisplayMetrics.DENSITY_LOW) @@ -224,7 +227,8 @@ public class QtNative desktopWidthPixels, desktopHeightPixels, XDpi, - YDpi); + YDpi, + scaledDensity); } else { m_displayMetricsScreenWidthPixels = screenWidthPixels; m_displayMetricsScreenHeightPixels = screenHeightPixels; @@ -232,6 +236,7 @@ public class QtNative m_displayMetricsDesktopHeightPixels = desktopHeightPixels; m_displayMetricsXDpi = XDpi; m_displayMetricsYDpi = YDpi; + m_displayMetricsScaledDensity = scaledDensity; } } } @@ -535,7 +540,8 @@ public class QtNative int desktopWidthPixels, int desktopHeightPixels, double XDpi, - double YDpi); + double YDpi, + double scaledDensity); public static native void handleOrientationChanged(int newOrientation); // screen methods diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java index 77126ec1c8..b994a43ac4 100644 --- a/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java +++ b/src/android/jar/src/org/qtproject/qt5/android/QtSurface.java @@ -103,7 +103,7 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback DisplayMetrics metrics = new DisplayMetrics(); ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(metrics); QtNative.setApplicationDisplayMetrics(metrics.widthPixels, - metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi); + metrics.heightPixels, getWidth(), getHeight(), metrics.xdpi, metrics.ydpi, metrics.scaledDensity); if (m_usesGL) holder.setFormat(PixelFormat.RGBA_8888); @@ -136,7 +136,8 @@ public class QtSurface extends SurfaceView implements SurfaceHolder.Callback width, height, metrics.xdpi, - metrics.ydpi); + metrics.ydpi, + metrics.scaledDensity); if (!m_started) return; |