指令汇B新闻客户端开发(六) 浅谈屏幕适配解决方案
屏幕适配的问题,我相信很多大牛的经验远比我丰富,在此就简单的分享一下我所做的的屏幕适配方案,当然我说的是安卓方面的啦,嘿嘿,屏幕适配我们一般用1280*720的屏幕作为我们的主流开发屏,当然现在AndroidStudio上面可以直接看到所有种类的屏幕,大大方便了我们的开发。
我们遵循的原则是不用AbsoluteLayout(绝对布局),多用相对布局&线性布局(权重), 要用dp,不用px。
开发后期, 在不同分辨率屏幕上测试(480*800,1920*1080), 如果没出现太大问题(影响正常使用), 就可以上线。
1、图片适配:不是很常用
2、布局适配:不是很常用, layout-800x480 专门适配480*800的屏幕
3、 权重适配:android:weightSum="3"
4、代码适配:获取屏幕宽高,动态计算控件
int width=getWindowManager ().getDefaultDisplay().getWidth (); slidingMenu.setBehindOffset (width*200/320);// 设置预留屏幕的 宽度5、尺寸适配:
dp和px的关系: dp = px/设备密度
float density = getResources().getDisplayMetrics().density;
320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)
括号后面的就是计算出来的屏幕密度。
我们可以在values->dimens.xml 中设置大小
然后再新建一个文件夹:values-1280x720,当屏幕是1280*720的时候就优先加载这个文件夹的。
public class DensityUtils { /** * dp转px */ public static int dp2px(Context ctx, float dp) { float density = ctx.getResources().getDisplayMetrics().density; int px = (int) (dp * density + 0.5f);// 四舍五入 return px; } public static float px2dp(Context ctx, int px) { float density = ctx.getResources().getDisplayMetrics().density; float dp = px / density; return dp; } }