91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package com.google.android.material.internal;
 | |
| 
 | |
| import android.content.Context;
 | |
| import android.graphics.Point;
 | |
| import android.graphics.Rect;
 | |
| import android.os.Build;
 | |
| import android.util.Log;
 | |
| import android.view.Display;
 | |
| import android.view.WindowManager;
 | |
| import android.view.WindowMetrics;
 | |
| import java.lang.reflect.InvocationTargetException;
 | |
| import java.lang.reflect.Method;
 | |
| 
 | |
| /* loaded from: classes.dex */
 | |
| public class WindowUtils {
 | |
|     private static final String TAG = "WindowUtils";
 | |
| 
 | |
|     private WindowUtils() {
 | |
|     }
 | |
| 
 | |
|     public static Rect getCurrentWindowBounds(Context context) {
 | |
|         WindowManager windowManager = (WindowManager) context.getSystemService("window");
 | |
|         if (Build.VERSION.SDK_INT >= 30) {
 | |
|             return Api30Impl.getCurrentWindowBounds(windowManager);
 | |
|         }
 | |
|         return Api17Impl.getCurrentWindowBounds(windowManager);
 | |
|     }
 | |
| 
 | |
|     private static class Api30Impl {
 | |
|         private Api30Impl() {
 | |
|         }
 | |
| 
 | |
|         static Rect getCurrentWindowBounds(WindowManager windowManager) {
 | |
|             WindowMetrics currentWindowMetrics;
 | |
|             Rect bounds;
 | |
|             currentWindowMetrics = windowManager.getCurrentWindowMetrics();
 | |
|             bounds = currentWindowMetrics.getBounds();
 | |
|             return bounds;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class Api17Impl {
 | |
|         private Api17Impl() {
 | |
|         }
 | |
| 
 | |
|         static Rect getCurrentWindowBounds(WindowManager windowManager) {
 | |
|             Display defaultDisplay = windowManager.getDefaultDisplay();
 | |
|             Point point = new Point();
 | |
|             defaultDisplay.getRealSize(point);
 | |
|             Rect rect = new Rect();
 | |
|             rect.right = point.x;
 | |
|             rect.bottom = point.y;
 | |
|             return rect;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private static class Api14Impl {
 | |
|         private Api14Impl() {
 | |
|         }
 | |
| 
 | |
|         static Rect getCurrentWindowBounds(WindowManager windowManager) {
 | |
|             Display defaultDisplay = windowManager.getDefaultDisplay();
 | |
|             Point realSizeForDisplay = getRealSizeForDisplay(defaultDisplay);
 | |
|             Rect rect = new Rect();
 | |
|             if (realSizeForDisplay.x == 0 || realSizeForDisplay.y == 0) {
 | |
|                 defaultDisplay.getRectSize(rect);
 | |
|             } else {
 | |
|                 rect.right = realSizeForDisplay.x;
 | |
|                 rect.bottom = realSizeForDisplay.y;
 | |
|             }
 | |
|             return rect;
 | |
|         }
 | |
| 
 | |
|         private static Point getRealSizeForDisplay(Display display) {
 | |
|             Point point = new Point();
 | |
|             try {
 | |
|                 Method declaredMethod = Display.class.getDeclaredMethod("getRealSize", Point.class);
 | |
|                 declaredMethod.setAccessible(true);
 | |
|                 declaredMethod.invoke(display, point);
 | |
|             } catch (IllegalAccessException e) {
 | |
|                 Log.w(WindowUtils.TAG, e);
 | |
|             } catch (NoSuchMethodException e2) {
 | |
|                 Log.w(WindowUtils.TAG, e2);
 | |
|             } catch (InvocationTargetException e3) {
 | |
|                 Log.w(WindowUtils.TAG, e3);
 | |
|             }
 | |
|             return point;
 | |
|         }
 | |
|     }
 | |
| }
 |