From ecaf8069072e71db4bff94671e72764b211d6af1 Mon Sep 17 00:00:00 2001 From: Linjiajia <319408893@qq.com> Date: 星期四, 26 十月 2023 00:43:51 +0800 Subject: [PATCH] 功能完善 --- app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java | 62 ++++++++++++++++++++++++++++++ 1 files changed, 61 insertions(+), 1 deletions(-) diff --git a/app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java b/app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java index 67634fb..22ac83d 100644 --- a/app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java +++ b/app_base/src/main/java/com/android/app_base/utils/ScreenSizeUtils.java @@ -1,8 +1,17 @@ package com.android.app_base.utils; +import android.app.Activity; +import android.app.Application; +import android.content.ComponentCallbacks; import android.content.Context; +import android.content.res.Configuration; +import android.util.DisplayMetrics; import androidx.annotation.DimenRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.android.app_base.base.BaseApplication; /** * @author Ljj @@ -32,7 +41,7 @@ */ public static int getDP(Context context,@DimenRes int dpSize){ float pxValue = context.getResources().getDimension(dpSize);//鑾峰彇瀵瑰簲璧勬簮鏂囦欢涓嬬殑sp鍊� - //灏唒x鍊艰浆鎹㈡垚sp鍊� + //灏唒x鍊艰浆鎹㈡垚dp鍊� return px2dip(context, pxValue); } @@ -44,6 +53,10 @@ return (int) dpValue; } final float scale = context.getResources().getDisplayMetrics().density; + return (int) (dpValue * scale + 0.5f); + } + public static int dip2px(float dpValue) { + final float scale = BaseApplication.getInstance().getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } @@ -71,4 +84,51 @@ final float scale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (pxValue / scale + 0.5f); } + public static int getScreenWidth(Context context){ + DisplayMetrics dm = context.getResources().getDisplayMetrics(); + if(dm != null)return dm.widthPixels; + return 0; + } + public static int getScreenHeight(Context context){ + DisplayMetrics dm = context.getResources().getDisplayMetrics(); + if(dm != null)return dm.heightPixels; + return 0; + } + + //浠婃棩澶存潯灞忓箷閫傞厤鏂规 + private static float sNoncompatDensity; + private static float sNoncompatScaledDensity; + public static void setCustomDensity(@NonNull Activity activity, @NonNull final Application application){ + final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics(); + + if (sNoncompatDensity == 0){ + sNoncompatDensity = appDisplayMetrics.density; + sNoncompatScaledDensity = appDisplayMetrics.scaledDensity; + application.registerComponentCallbacks(new ComponentCallbacks() { + @Override + public void onConfigurationChanged(@NonNull Configuration newConfig) { + if (newConfig != null && newConfig.fontScale > 0){ + sNoncompatScaledDensity = application.getResources().getDisplayMetrics().scaledDensity; + } + } + + @Override + public void onLowMemory() { + + } + }); + } + final float targetDensity = appDisplayMetrics.widthPixels / 360; + final float targetScaledDensity = targetDensity * (sNoncompatScaledDensity / sNoncompatDensity); + final int targetDensityDpi = (int) (160*targetDensity); + + appDisplayMetrics.density = targetDensity; + appDisplayMetrics.scaledDensity = targetScaledDensity; + appDisplayMetrics.densityDpi = targetDensityDpi; + + final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics(); + activityDisplayMetrics.density = targetDensity; + activityDisplayMetrics.scaledDensity = targetScaledDensity; + activityDisplayMetrics.densityDpi = targetDensityDpi; + } } -- Gitblit v1.9.1