import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks;
import android.content.res.Configuration;
import android.util.DisplayMetrics;
public class Density {
//单位 dp
private static final float WIDTH = 410;
private static float appDensity = 0;
private static float appScaleDensity = 0;
public static void setDensity(final Application application, Activity activity){
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){
appScaleDensity = application.getResources().getDisplayMetrics().scaledDensity;
}
}
@Override
public void onLowMemory() {
}
});
}
float targetDensity = displayMetrics.widthPixels/WIDTH;
float targetScaleDensity = targetDensity*(appScaleDensity/appDensity);
int targetDensityDpi = (int) (targetDensity*160);
//替换Activity 的 Density
DisplayMetrics dm = activity.getResources().getDisplayMetrics();
dm.density = targetDensity;
dm.scaledDensity = targetScaleDensity;
dm.densityDpi = targetDensityDpi;
}
}
android屏幕适配
最新推荐文章于 2022-11-10 16:43:14 发布