网上屏幕适配的方式有很多,比如按百分比的、按分辨率的,这里我是按最小宽度去适配,也是Google建议的方式。
1.首先下载屏幕适配插件ScreenMatch。
AS→File→Settings→plugins→SreenMatch下载即可。
2.在项目的任意目录或文件右键选择ScreenMatch,选module,生成一堆dimens.xml文件。生成成功的前提是原有工程中已存在默认的dimens.xml文件。觉得抽象的话,具体的操作方式,网上一搜,很多。
3.根据UI给的设计图,用设计图中的最小宽度除以基准值360得到比例值,然后用设计图控件标注除以比例值即可。
例如:UI设计图为800*1280,控件的宽720px,高100px,则设置控件宽:@dimen/dp_720/(800/360),高:@dimen/dp_100/(800/360)
4.字体的设置方式同3,只不过将dp_XXX换为sp_XXX即可。
5.获取屏幕最小宽度的代码:
/**
* 获取屏幕相关参数
*
* @return
*/
public void getScreenParams() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int heightPixels = dm.heightPixels;
int widthPixels = dm.widthPixels;
float xdpi = dm.xdpi;
float ydpi = dm.ydpi;
int densityDpi = dm.densityDpi;
float density = dm.density;
float scaledDensity = dm.scaledDensity;
float heightDP = heightPixels / density;
float widthDP = widthPixels / density;
float smallestWidthDP;
if(widthDP < heightDP) {
smallestWidthDP = widthDP;
}else {
smallestWidthDP = heightDP;
}
String str = "heightPixels: " + heightPixels + "px";
str += "\nwidthPixels: " + widthPixels + "px";
str += "\nxdpi: " + xdpi + "dpi";
str += "\nydpi: " + ydpi + "dpi";
str += "\ndensityDpi: " + densityDpi + "dpi";
str += "\ndensity: " + density;
str += "\nscaledDensity: " + scaledDensity;
str += "\nheightDP: " + heightDP + "dp";
str += "\nwidthDP: " + widthDP + "dp";
str += "\nsmallestWidthDP: " + smallestWidthDP + "dp";
Log.d(TAG, str);
}
6.经过5台不同Android平板的实验,亲测可行,以上供大家参考!
参考资料: