首先通过阅读API发现获得DisplayMetrics这个对象的方式有两种:
方式一:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
方式二
DisplayMetrics metrics = new DisplayMetrics();
metrics = getResources().getDisplayMetrics();
目前发现只在使用方式上有一点区别:
方式一用于Activity中,通过Activity中的getWindowManager()方法来获取DisplayMetrics对象。
方式二用于继承于view的类中,通过context.getResources()方法来获得DisplayMetrics对象。
当获得了屏幕信息对象之后,经常要使用标准尺寸转换函数,下面也进行一些介绍:
int wight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 200, metrics);
int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 50, metrics);
参数介绍:
参数1:要换算成的单位
参数2:要进行转换的尺寸
参数3:当前屏幕的信息
以方式二为例:
int offSet = 52;
int tabTextSize = 12;
DisplayMetrics metrics = getResources().getDisplayMetrics();
offSet = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, offSet, metrics);
tabTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, tabTextSize, metrics);