| | |
| | | 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; |
| | | |
| | | /** |
| | | * @author Ljj |
| | |
| | | */ |
| | | public static int getDP(Context context,@DimenRes int dpSize){ |
| | | float pxValue = context.getResources().getDimension(dpSize);//获取对应资源文件下的sp值 |
| | | //将px值转换成sp值 |
| | | //将px值转换成dp值 |
| | | return px2dip(context, pxValue); |
| | | } |
| | | |
| | |
| | | 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; |
| | | } |
| | | } |