1点把,屏幕適配類(lèi)
public class Density {
private static final float WIDTH =320;//參考設(shè)備的寬,單位是dp
private static float appDensity;//表示屏幕密度
private static float appScaleDensity;//字體縮放比例郎逃,默認(rèn)appDensity
public static void setDensity(final Application application, Activity activity) {
DisplayMetrics displayMetrics = application.getResources().getDisplayMetrics();
if (appDensity ==0) {
//初始化賦值操作
appDensity = displayMetrics.density;
appScaleDensity = displayMetrics.scaledDensity;
//添加字體變化監(jiān)聽(tīng)回調(diào)
application.registerComponentCallbacks(new ComponentCallbacks() {
@Override
public void onConfigurationChanged(Configuration newConfig) {
//字體發(fā)生更改哥童,重新對(duì)scaleDensity 進(jìn)行賦值
if (newConfig !=null && newConfig.fontScale >0) {
appScaleDensity =application.getResources().getDisplayMetrics().scaledDensity;
}
}
@Override
public void onLowMemory() {
}
});
}
//計(jì)算目標(biāo)值 Density ScaleDensity DensityDpi
float targetDencity = displayMetrics.widthPixels /WIDTH;//1080 / 360 = 3.0
float targetScaleDensity = targetDencity * (appScaleDensity /appDensity);
int targetDensityDpi = (int) (targetDencity *160);
//替換activity的 Density ScaleDensity DensityDpi
DisplayMetrics dm = activity.getResources().getDisplayMetrics();
dm.density = targetDencity;
dm.scaledDensity = targetScaleDensity;
dm.densityDpi = targetDensityDpi;
}
}
2,在Application中使用
public class Appextends Application {
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Density.setDensity(App.this, activity);
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
}