private float density;
private float scalldensity;
public void updateDensity() {
DisplayMetrics displayMetrics = getApplication().getResources().getDisplayMetrics();
if (density == 0) {
density = displayMetrics.density;
scalldensity = displayMetrics.scaledDensity;
getApplication().registerComponentCallbacks(new ComponentCallbacks() {
@Override
public void onConfigurationChanged(Configuration newConfig) {
if (newConfig != null && newConfig.fontScale > 0) {
scalldensity = getApplication().getResources().getDisplayMetrics().scaledDensity;
}
}
@Override
public void onLowMemory() {
}
});
}
float targetDensity = displayMetrics.widthPixels / 360f;
float targetScallDensity = targetDensity * (scalldensity / density);
int targetDensityDpi = (int) targetDensity * 160;
displayMetrics.density = targetDensity;
displayMetrics.scaledDensity = targetScallDensity;
displayMetrics.densityDpi = targetDensityDpi;
DisplayMetrics thisDisplayMetrics = this.getResources().getDisplayMetrics();
thisDisplayMetrics.density = targetDensity;
thisDisplayMetrics.scaledDensity = targetScallDensity;
thisDisplayMetrics.densityDpi = targetDensityDpi;
}
以上方法在Activity的onCreate中调用即可。今日头条采用的适配方案,简直了.......ORZ