原文:mp.weixin.qq.com/s/d9QCoBP6k…
1.代码
import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
public class DensityUtils {
private static float appDensity;
private static float appScaleDensity;
private static final float WIDTH = 360; //单位DP
public static void setDensity(Application application, Activity activity) {
float targetDensity;
float targetScaleDensity;
int targetDensityDpi;
DisplayMetrics displayMetrics = application.getResources().getDisplayMetrics();
if (appDensity == 0) {
appDensity = displayMetrics.density;
appScaleDensity = displayMetrics.scaledDensity;
application.registerComponentCallbacks(new ComponentCallbacks() {
@Override
public void onConfigurationChanged(Configuration newConfig) {
if(newConfig!=null && newConfig.fontScale>0){
appScaleDensity = application.getResources().getDisplayMetrics().scaledDensity;
}
}
@Override
public void onLowMemory() {
}
});
}
targetDensity = displayMetrics.widthPixels / WIDTH;
targetScaleDensity = targetDensity * (appDensity / appScaleDensity);
targetDensityDpi = (int) (targetDensity * 160);
DisplayMetrics dm = activity.getResources().getDisplayMetrics();
dm.density = targetDensity;
dm.scaledDensity = targetScaleDensity;
dm.densityDpi = targetDensityDpi;
}
}
2.使用
可以在BaseActivity中调用
也阔以在application中调用