Loading core/java/android/view/Surface.java +22 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.view; import android.graphics.*; import android.os.Parcelable; import android.os.Parcel; import android.util.DisplayMetrics; import android.util.Log; /** Loading Loading @@ -131,6 +132,10 @@ public class Surface implements Parcelable { @SuppressWarnings("unused") private Canvas mCanvas; // The display metrics used to provide the pseudo canvas size for applications // running in compatibility mode. This is set to null for regular mode. private DisplayMetrics mDisplayMetrics; /** * Exception thrown when a surface couldn't be created or resized */ Loading Loading @@ -167,7 +172,23 @@ public class Surface implements Parcelable { * {@hide} */ public Surface() { mCanvas = new Canvas(); mCanvas = new Canvas() { @Override public int getWidth() { return mDisplayMetrics == null ? super.getWidth() : mDisplayMetrics.widthPixels; } @Override public int getHeight() { return mDisplayMetrics == null ? super.getHeight() : mDisplayMetrics.heightPixels; } }; } /** * Sets the display metrics used to provide canva's width/height in comaptibility mode. */ void setCompatibleDisplayMetrics(DisplayMetrics metrics) { mDisplayMetrics = metrics; } /** Loading core/java/android/view/SurfaceView.java +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.view; import android.content.Context; import android.content.res.Resources; import android.content.res.CompatibilityInfo.Translator; import android.graphics.Canvas; import android.graphics.PixelFormat; Loading Loading @@ -301,6 +302,11 @@ public class SurfaceView extends View { float appScale = mTranslator == null ? 1.0f : mTranslator.applicationScale; Resources res = getContext().getResources(); if (mTranslator != null || !res.getCompatibilityInfo().supportsScreen()) { mSurface.setCompatibleDisplayMetrics(res.getDisplayMetrics()); } int myWidth = mRequestedWidth; if (myWidth <= 0) myWidth = getWidth(); int myHeight = mRequestedHeight; Loading core/java/android/view/ViewRoot.java +8 −3 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Scroller; import android.content.pm.PackageManager; import android.content.res.CompatibilityInfo; import android.content.res.Resources; import android.content.Context; import android.app.ActivityManagerNative; import android.Manifest; Loading Loading @@ -386,10 +387,14 @@ public final class ViewRoot extends Handler implements ViewParent, mView = view; mWindowAttributes.copyFrom(attrs); attrs = mWindowAttributes; CompatibilityInfo compatibilityInfo = mView.getContext().getResources().getCompatibilityInfo(); Resources resources = mView.getContext().getResources(); CompatibilityInfo compatibilityInfo = resources.getCompatibilityInfo(); mTranslator = compatibilityInfo.getTranslator(attrs); if (mTranslator != null || !compatibilityInfo.supportsScreen()) { mSurface.setCompatibleDisplayMetrics(resources.getDisplayMetrics()); } boolean restore = false; if (attrs != null && mTranslator != null) { restore = true; Loading Loading
core/java/android/view/Surface.java +22 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package android.view; import android.graphics.*; import android.os.Parcelable; import android.os.Parcel; import android.util.DisplayMetrics; import android.util.Log; /** Loading Loading @@ -131,6 +132,10 @@ public class Surface implements Parcelable { @SuppressWarnings("unused") private Canvas mCanvas; // The display metrics used to provide the pseudo canvas size for applications // running in compatibility mode. This is set to null for regular mode. private DisplayMetrics mDisplayMetrics; /** * Exception thrown when a surface couldn't be created or resized */ Loading Loading @@ -167,7 +172,23 @@ public class Surface implements Parcelable { * {@hide} */ public Surface() { mCanvas = new Canvas(); mCanvas = new Canvas() { @Override public int getWidth() { return mDisplayMetrics == null ? super.getWidth() : mDisplayMetrics.widthPixels; } @Override public int getHeight() { return mDisplayMetrics == null ? super.getHeight() : mDisplayMetrics.heightPixels; } }; } /** * Sets the display metrics used to provide canva's width/height in comaptibility mode. */ void setCompatibleDisplayMetrics(DisplayMetrics metrics) { mDisplayMetrics = metrics; } /** Loading
core/java/android/view/SurfaceView.java +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.view; import android.content.Context; import android.content.res.Resources; import android.content.res.CompatibilityInfo.Translator; import android.graphics.Canvas; import android.graphics.PixelFormat; Loading Loading @@ -301,6 +302,11 @@ public class SurfaceView extends View { float appScale = mTranslator == null ? 1.0f : mTranslator.applicationScale; Resources res = getContext().getResources(); if (mTranslator != null || !res.getCompatibilityInfo().supportsScreen()) { mSurface.setCompatibleDisplayMetrics(res.getDisplayMetrics()); } int myWidth = mRequestedWidth; if (myWidth <= 0) myWidth = getWidth(); int myHeight = mRequestedHeight; Loading
core/java/android/view/ViewRoot.java +8 −3 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Scroller; import android.content.pm.PackageManager; import android.content.res.CompatibilityInfo; import android.content.res.Resources; import android.content.Context; import android.app.ActivityManagerNative; import android.Manifest; Loading Loading @@ -386,10 +387,14 @@ public final class ViewRoot extends Handler implements ViewParent, mView = view; mWindowAttributes.copyFrom(attrs); attrs = mWindowAttributes; CompatibilityInfo compatibilityInfo = mView.getContext().getResources().getCompatibilityInfo(); Resources resources = mView.getContext().getResources(); CompatibilityInfo compatibilityInfo = resources.getCompatibilityInfo(); mTranslator = compatibilityInfo.getTranslator(attrs); if (mTranslator != null || !compatibilityInfo.supportsScreen()) { mSurface.setCompatibleDisplayMetrics(resources.getDisplayMetrics()); } boolean restore = false; if (attrs != null && mTranslator != null) { restore = true; Loading