android 本身提供了屏幕自适应解决方案。原生方案要求我们为不同分辨率设备输出素材、资源,在实际项目实施过程中操作起来比较麻烦。
下面为大家介绍一种一套素材、一套xml自适应所有分辨率的方法。
Resources resources =getResources();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
displayMetrics.density = Math.max(displayMetrics.widthPixels, displayMetrics.heightPixels)/1920f;
displayMetrics.scaledDensity = displayMetrics.density;
displayMetrics.densityDpi =(int)(displayMetrics.density*240);
setContentView(R.layout.main);
在 Activity onCreate 中加入上面的代码。应用用会自适应所有分辨率的设备。
原理:
其中上面的1920f代表你开发应用使用的素材、资源是以1920*1080为基准开发的。在xml中长度单位使用dip,文字大小单位使用sp。如果代码中需要使用数字赋值,请将数字定义在dimens.xml中。
displayMetrics.density :计算布局缩放比例,当设备分辨率是1920*N(N<=1920)时,缩放比例为1。由于density 不区分x,y方向,当设备分辨率不是16:9时,缩放只能自适应长或宽;
displayMetrics.scaledDensity :文字缩放比例;
displayMetrics.densityDpi :指定应用使用drawable-hdpi下的图片,图片需要以1920*1080为基准输出。