OSDN Git Service

FloatingActionMode: Use DisplayMetrics.getRealSize for screen size.
authorAbodunrinwa Toki <toki@google.com>
Thu, 4 Aug 2016 03:07:15 +0000 (20:07 -0700)
committerAbodunrinwa Toki <toki@google.com>
Fri, 5 Aug 2016 01:17:55 +0000 (18:17 -0700)
Change-Id: I841bce64a63460452f378a8f612c386a31e88865

core/java/com/android/internal/view/FloatingActionMode.java

index 831c646..1203dd2 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.internal.view;
 
 import android.content.Context;
+import android.graphics.Point;
 import android.graphics.Rect;
 import android.view.ActionMode;
 import android.view.Menu;
@@ -26,7 +27,7 @@ import android.view.View;
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.ViewParent;
-import android.util.DisplayMetrics;
+import android.view.WindowManager;
 
 import com.android.internal.R;
 import com.android.internal.util.Preconditions;
@@ -54,6 +55,7 @@ public class FloatingActionMode extends ActionMode {
     private final Rect mScreenRect;
     private final View mOriginatingView;
     private final int mBottomAllowance;
+    private final Point mDisplaySize;
 
     private final Runnable mMovingOff = new Runnable() {
         public void run() {
@@ -103,6 +105,7 @@ public class FloatingActionMode extends ActionMode {
         // bottom view bound if necessary.
         mBottomAllowance = context.getResources()
                 .getDimensionPixelSize(R.dimen.content_rect_bottom_clip_allowance);
+        mDisplaySize = new Point();
     }
 
     public void setFloatingToolbar(FloatingToolbar floatingToolbar) {
@@ -210,9 +213,9 @@ public class FloatingActionMode extends ActionMode {
     }
 
     private boolean isContentRectWithinBounds() {
-        DisplayMetrics metrics = mContext.getApplicationContext()
-                .getResources().getDisplayMetrics();
-        mScreenRect.set(0, 0, metrics.widthPixels, metrics.heightPixels);
+        mContext.getSystemService(WindowManager.class)
+            .getDefaultDisplay().getRealSize(mDisplaySize);
+        mScreenRect.set(0, 0, mDisplaySize.x, mDisplaySize.y);
 
         return intersectsClosed(mContentRectOnScreen, mScreenRect)
             && intersectsClosed(mContentRectOnScreen, mViewRectOnScreen);