屏幕适配

来源:互联网 发布:知道具体位置的软件 编辑:程序博客网 时间:2024/06/16 15:37

屏幕适配

> 主流屏幕: 1280*720, 遵循原则: 不用AbsoluteLayout(绝对布局), 多用相对布局&线性布局(权重), 要用dp,不用px

> 开发后期, 在不同分辨率屏幕上测试(480*800,1920*1080), 如果没出现太大问题(影响正常使用), 就可以上线

> 如果后期测出问题怎么办?



- 图片适配


不是很常用


- 布局适配


不是很常用,  layout-800x480 专门适配480*800的屏幕


- 尺寸适配


dp和px的关系: dp = px/设备密度


float density = getResources().getDisplayMetrics().density;
System.out.println("设备密度:" + density);


320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)


values->dimens.xml  values-1280x720


dp与px转换
<span style="font-size:14px;">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);// 4.9->5 4.4->4return px;}public static float px2dp(Context ctx, int px) {float density = ctx.getResources().getDisplayMetrics().density;float dp = px / density;return dp;}}</span>

使用
1.布局文件中dp系统会根据分辨率转换成px,代码中是px
2.代码中将dp转换成px
<span style="font-size:14px;">LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(DensityUtils.dp2px(this, 10), DensityUtils.dp2px(this, 10));if (i > 0) {params.leftMargin = DensityUtils.dp2px(this, 10);// 设置圆点间隔}</span>





- 权重适配


android:weightSum="3"


- 代码适配


获取屏幕宽高,动态计算控件大小

int width = getWindowManager().getDefaultDisplay().getWidth();// 获取屏幕宽度slidingMenu.setBehindOffset(width * 200 / 320);// 设置预留屏幕的宽度


0 0
原创粉丝点击