屏幕适配的几种常用方法

首先在开发者我们要养成一个良好的开发习惯,遵循一些好的屏幕适配原则:

开发前部分阶段:比如尽量不用AbsoluteLayout(绝对布局),多用线性布局与相对布局,设置宽高边距等尺寸用dp(dip),不要用px。开发调试选择主流屏幕(1280*720)

开发后阶段:在不同分辨率手机(主流的手机分辨率和当前市场主流手机)上测试,没有大问题(不影响使用,比如不同分辨率相差一两个像素这样,当然,如果公司要求较   高就必须处理了)就可以发布上线使用。

出现问题解决方法:

1、图片适配

该方法不常用,当图片在不同屏幕手机上出现偏差、失侦等情况,很简单,让UI给你多切几套图,放在res目录下的drawable-hdpi、drawable-mdpi、drawable- xhdpi、drawable-xxhdpi、drawable-xxxhdpi,这几个目录分别对应不同的屏幕,当不同屏幕启动App时候会优先去访问其对应的目录下的图片 资源,如果对应下面没有才回去访问其他的目录。

2、布局适配

该方法也不常用,其原理和图片适配差不多,就是当不同屏幕上同一个布局文件不能满足需求,比如大屏幕需要做特殊显示这种,此时就在res目录下新建一个文件夹 layout-800x480(适配480*800的屏幕,其他屏幕同样方法新建即可),然后在里面去对进行指定的设置布局文件了。

3、尺寸适配

这里先介绍一个概率:设备密度(dp和px的转换关系,dp=px/设备密度);320*240(0.75), 480*320(1),480*800(1.5),1280*720(2)这是主流几大屏幕对应的设备密 度。

一般在开发者,美工UI给我们的都是PX,我们在设置的时候就不能还自己把PX缓存DP这么简单了,比如说,美工在1280*720上面切了一套图,给出的某个控件宽100px,那么此时我们在布局文件设置就应该设置为50dp(100/设备密度);在一些需求中,不同屏幕需要设置不同的尺寸,此时可以新建一个values-(分辨率)这样的目录,在其下面有一个dimens文件(在原values下的dimens也要设置),在里面进行尺寸设置然后再布局里面调用即可,同样的道理,手机访问App当调用values里面的文件时会优先调优和自己对应的文件。

还有一点就是我们在代码中设置尺寸适合java代码默认为px,我们需要用一个工具类进行转换

dp与px直接转换的工具类:

public class ScreenSizeAdapter {

	/**
	 * dip转为 px
	 */
	public static int dip2px(Context context, float dipValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dipValue * scale + 0.5f);
	}

	/**
	 * px 转为 dip
	 */
	public static int px2dip(Context context, float pxValue) {
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + 0.5f);
	}
}


4、权重适配

线性布局才能够设置权重。在LinearLayout属性设置里面可以设置总权重android:weightSum;然后在里面的空间去分配权重,这样不管在什么手机,都是按照权重比例来进行显示的。

5、代码适配

代码适配类似于权重适配,权重适配可以用代码适配来实习,但是代码适配就不一定能够用权重适配来实现,比如相对布局不能用权重,就可以代码来控制。实现原理是:计算屏幕宽高,动态的来设置空间宽高。一般根据比例去计算,比如侧滑菜单和主界面分别的比例,此时就可以这样动态去计算

DisplayMetrics dm = new DisplayMetrics();
		activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
<span style="white-space:pre">		</span>int whdth = dm.widthPixels;//获取屏幕宽度
<span style="white-space:pre">		</span>int height = dm.heightPixels;//获取屏幕高度


屏幕适配要根据不同的需求,不同的问题进行选择不同的解决方法

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值