屏幕适配的几种常用方法
来源:互联网 发布:nginx 多个ssl 编辑:程序博客网 时间:2024/05/17 21:57
首先在开发者我们要养成一个良好的开发习惯,遵循一些好的屏幕适配原则:
开发前部分阶段:比如尽量不用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;//获取屏幕高度
- 屏幕适配的几种常用方法
- 谈谈移动端屏幕适配的几种方法
- Android 几种常用关于屏幕操作的方法(获取屏幕大小,全屏,显示方向)
- 屏幕适配的几种尺寸
- c#截取屏幕的几种方法~
- 获取屏幕宽度的几种方法
- 获得屏幕尺寸的几种方法
- 元素居中屏幕的几种方法
- 屏幕截图的几种方法
- 获取屏幕宽度的几种方法
- 腾讯优测优分享 | 谈谈移动端屏幕适配的几种方法
- rem、px、em(手机端h5页面屏幕适配的几种方法)
- [读书笔记]布局的屏幕适配常用方法
- SAP ABAP编程 几种常用的屏幕输出格式
- Android 屏幕适配常用方法
- 关于屏幕适配的几种实践
- iOS屏幕适配的几种方式
- 让Flash自适应浏览器屏幕大小的几种方法
- Centos 7 下安装jdk7
- JVM内部机制详解
- 怎样在一个控件上设置字体局部的效果
- 实训
- C++函数模板与类模板
- 屏幕适配的几种常用方法
- 利用ajax实现二级联动下拉框
- SPI驱动框架源码分析
- Spring事务的传播和隔离
- 在secureCRT软件上运行一些简单的python脚本
- 在Windows使用notepad写的文本文件在Linux不能使用的解决方法
- 怎么在Excel2003版中查找重复值
- gopkg.in 无法下载包
- 用jQuery向div中添加html文本内容的简单实现