Skip to content

Commit 5033dee

Browse files
committed
优化获取当前屏幕的物理尺寸相关的代码位置
1 parent 6ddd6cf commit 5033dee

2 files changed

Lines changed: 40 additions & 31 deletions

File tree

library/src/main/java/com/hjq/window/draggable/BaseWindowDraggableRule.java

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,8 @@
33
import android.annotation.SuppressLint;
44
import android.app.Activity;
55
import android.content.Context;
6-
import android.graphics.Point;
76
import android.graphics.Rect;
87
import android.os.Build;
9-
import android.os.Build.VERSION;
10-
import android.os.Build.VERSION_CODES;
11-
import android.util.DisplayMetrics;
12-
import android.view.Display;
138
import android.view.Gravity;
149
import android.view.MotionEvent;
1510
import android.view.View;
@@ -459,32 +454,7 @@ public void refreshWindowInfo() {
459454
*/
460455
@SuppressWarnings("deprecation")
461456
public void refreshScreenPhysicalSize() {
462-
if (mEasyWindow == null) {
463-
return;
464-
}
465-
466-
WindowManager windowManager = mEasyWindow.getWindowManager();
467-
Display defaultDisplay = windowManager.getDefaultDisplay();
468-
if (defaultDisplay == null) {
469-
return;
470-
}
471-
472-
DisplayMetrics metrics = new DisplayMetrics();
473-
defaultDisplay.getMetrics(metrics);
474-
475-
float screenWidthInInches;
476-
float screenHeightInInches;
477-
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
478-
Point point = new Point();
479-
defaultDisplay.getRealSize(point);
480-
screenWidthInInches = point.x / metrics.xdpi;
481-
screenHeightInInches = point.y / metrics.ydpi;
482-
} else {
483-
screenWidthInInches = metrics.widthPixels / metrics.xdpi;
484-
screenHeightInInches = metrics.heightPixels / metrics.ydpi;
485-
}
486-
487457
// 勾股定理:直角三角形的两条直角边的平方和等于斜边的平方
488-
mScreenPhysicalSize = Math.sqrt(Math.pow(screenWidthInInches, 2) + Math.pow(screenHeightInInches, 2));
458+
mScreenPhysicalSize = getScreenPhysicalSize(mEasyWindow);
489459
}
490460
}

library/src/main/java/com/hjq/window/draggable/IWindowDraggableAuxiliary.java

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@
33
import android.app.Activity;
44
import android.content.Context;
55
import android.content.res.Resources;
6+
import android.graphics.Point;
67
import android.graphics.Rect;
78
import android.os.Build;
9+
import android.os.Build.VERSION;
10+
import android.os.Build.VERSION_CODES;
11+
import android.util.DisplayMetrics;
812
import android.util.TypedValue;
13+
import android.view.Display;
914
import android.view.DisplayCutout;
1015
import android.view.MotionEvent;
1116
import android.view.View;
1217
import android.view.ViewGroup;
1318
import android.view.Window;
1419
import android.view.WindowInsets;
20+
import android.view.WindowManager;
1521
import android.webkit.WebView;
1622
import android.widget.ListView;
1723
import android.widget.ScrollView;
@@ -284,4 +290,37 @@ default float calculateGapSizeRatio(float gapSize, float totalSize) {
284290
// 正常情况,返回计算的比例
285291
return ratio;
286292
}
293+
294+
/**
295+
* 获取当前屏幕的物理尺寸
296+
*/
297+
@SuppressWarnings("deprecation")
298+
default double getScreenPhysicalSize(@Nullable EasyWindow<?> easyWindow) {
299+
if (easyWindow == null) {
300+
return 0;
301+
}
302+
WindowManager windowManager = easyWindow.getWindowManager();
303+
Display defaultDisplay = windowManager.getDefaultDisplay();
304+
if (defaultDisplay == null) {
305+
return 0;
306+
}
307+
308+
DisplayMetrics metrics = new DisplayMetrics();
309+
defaultDisplay.getMetrics(metrics);
310+
311+
float screenWidthInInches;
312+
float screenHeightInInches;
313+
if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
314+
Point point = new Point();
315+
defaultDisplay.getRealSize(point);
316+
screenWidthInInches = point.x / metrics.xdpi;
317+
screenHeightInInches = point.y / metrics.ydpi;
318+
} else {
319+
screenWidthInInches = metrics.widthPixels / metrics.xdpi;
320+
screenHeightInInches = metrics.heightPixels / metrics.ydpi;
321+
}
322+
323+
// 勾股定理:直角三角形的两条直角边的平方和等于斜边的平方
324+
return Math.sqrt(Math.pow(screenWidthInInches, 2) + Math.pow(screenHeightInInches, 2));
325+
}
287326
}

0 commit comments

Comments
 (0)