谈谈Android机型适配
2017-02-21 18:32
253 查看
机型适配的作用在于使Android应用程序适用于不同的国家语言、型号、尺寸和SDK版本等手机环境中,其主要功能和界面风格保持不变。
手机适配主要包括三个方面:语言适配、屏幕适配、SDK平台的适配,而其中最麻烦的估计就是屏幕适配了。。。
1.先说语言适配。语言适配的作用主要用于文本内容的国际化,如按钮的标题、输入提示信息等。在切换手机语言时或者安装在不同语言手机上时,可以根据语言的不同做出改变。
步骤:
在res这个下新建Android resuorce file ,类型选择Values,然后Available qualifiers:选择Locale,然后选择语言即可。
2.接下来说说Android屏幕适配。Android屏幕适配出现的原因就是Android碎片化太严重!而随着支持Android 系统的设备(手机、平板、电视、手表)的增多,设备碎片化、品牌碎片化、屏幕碎片化的程度也在不断增加。
mdpi、hdpi 、xdpi、 xxdpi用来修饰Android中的drawable文件夹及values文件夹。
Google对mdpi、hdpi 、xdpi、 xxdpi等的官方标准:
在进行开发的时候我们需要将合适大小的图片放在合适的文件夹里面。
Android系统寻找图片的规则是这样的:
1.去屏幕密度对应的目录去找,如果找到就拿来用;
2.如果没找到,就去比这个密度高一级的目录里面去找,如果找到就拿来用;
3.如果没找到就继续往上找,以此类推;
4.如果到了xxhdpi目录还没有找到的话,就会去比自身屏幕密度低一级的目录去找,如果低一级的目录>= hdpi,找到了就拿来用;
5.如果没找到,就去mdpi目录去找,如果找到了就拿来用;
6.如果没找到,就去默认的drawable目录里面去找,如果找到了就拿来用。
7.如果没找到,再去最低的ldpi目录里面去找,如果找到了就拿来用;
8.如果没找到,那就是没找到了,图片无法显示。(不过一般不会出现这种现象,因为如果每个目录都没找到,你是编译不过的)
这里有两点需要注意:
1.首先会去比自己密度高的目录里去找,这是因为系统相信,你在密度高的目录里会放置分辨率更大的图片,这样的话这个图片会被缩小,但同时显示效果不会有损失,但是如果优先去低一级的目录里去找的话,找到的图片就会被放大,这样的话这个图片就会被拉扯模糊了。
同一张图片你在mdpi与xxhdpi目录里各放置了一份,这个应用你现在运行在hdpi的手机上,那应用会选择哪个呢?答案肯定是xxhdpi里的啦~即使hdpi离mdpi更近一点儿!
2.如果在mdpi里找不到是不会直接去ldpi里找的,而是先去默认的drawable目录里找,这是drawale目录和drawale-mdpi是一个级别的。
解决方案:
1.使用wrap_content、match_parent
2.在线性布局中使用weight属性
3.使用相对布局,禁用绝对布局
4.使用屏幕方向限定符
setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_PORITRAIT);
5.使用9宫格图片(.9.png) .9的制作实际上就时在原图片上添加1px的边界,然后按照我们的需求,把对应的位置设置成黑色,系统就会根据我们的实际需求进行拉伸。修改.9图片可以使用Android自带的工具:\sdk\tools\draw9patch.bat
6.设置ImageView 的ScaleTye属性。设置不同的ScaleType会得到不同的显示效果哟。一般情况下,设置为centerCrop能获得较好的适配效果
手机适配主要包括三个方面:语言适配、屏幕适配、SDK平台的适配,而其中最麻烦的估计就是屏幕适配了。。。
1.先说语言适配。语言适配的作用主要用于文本内容的国际化,如按钮的标题、输入提示信息等。在切换手机语言时或者安装在不同语言手机上时,可以根据语言的不同做出改变。
步骤:
在res这个下新建Android resuorce file ,类型选择Values,然后Available qualifiers:选择Locale,然后选择语言即可。
2.接下来说说Android屏幕适配。Android屏幕适配出现的原因就是Android碎片化太严重!而随着支持Android 系统的设备(手机、平板、电视、手表)的增多,设备碎片化、品牌碎片化、屏幕碎片化的程度也在不断增加。
mdpi、hdpi 、xdpi、 xxdpi用来修饰Android中的drawable文件夹及values文件夹。
Google对mdpi、hdpi 、xdpi、 xxdpi等的官方标准:
在进行开发的时候我们需要将合适大小的图片放在合适的文件夹里面。
Android系统寻找图片的规则是这样的:
1.去屏幕密度对应的目录去找,如果找到就拿来用;
2.如果没找到,就去比这个密度高一级的目录里面去找,如果找到就拿来用;
3.如果没找到就继续往上找,以此类推;
4.如果到了xxhdpi目录还没有找到的话,就会去比自身屏幕密度低一级的目录去找,如果低一级的目录>= hdpi,找到了就拿来用;
5.如果没找到,就去mdpi目录去找,如果找到了就拿来用;
6.如果没找到,就去默认的drawable目录里面去找,如果找到了就拿来用。
7.如果没找到,再去最低的ldpi目录里面去找,如果找到了就拿来用;
8.如果没找到,那就是没找到了,图片无法显示。(不过一般不会出现这种现象,因为如果每个目录都没找到,你是编译不过的)
这里有两点需要注意:
1.首先会去比自己密度高的目录里去找,这是因为系统相信,你在密度高的目录里会放置分辨率更大的图片,这样的话这个图片会被缩小,但同时显示效果不会有损失,但是如果优先去低一级的目录里去找的话,找到的图片就会被放大,这样的话这个图片就会被拉扯模糊了。
同一张图片你在mdpi与xxhdpi目录里各放置了一份,这个应用你现在运行在hdpi的手机上,那应用会选择哪个呢?答案肯定是xxhdpi里的啦~即使hdpi离mdpi更近一点儿!
2.如果在mdpi里找不到是不会直接去ldpi里找的,而是先去默认的drawable目录里找,这是drawale目录和drawale-mdpi是一个级别的。
解决方案:
1.使用wrap_content、match_parent
2.在线性布局中使用weight属性
3.使用相对布局,禁用绝对布局
4.使用屏幕方向限定符
setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestOrientation(ActivityInfo.SCREEN_ORIENTATION_PORITRAIT);
5.使用9宫格图片(.9.png) .9的制作实际上就时在原图片上添加1px的边界,然后按照我们的需求,把对应的位置设置成黑色,系统就会根据我们的实际需求进行拉伸。修改.9图片可以使用Android自带的工具:\sdk\tools\draw9patch.bat
6.设置ImageView 的ScaleTye属性。设置不同的ScaleType会得到不同的显示效果哟。一般情况下,设置为centerCrop能获得较好的适配效果
相关文章推荐
- android 双卡 双待机型适配
- Android,关于设备独立像素(dip/dp),关于机型屏幕适配
- 腾讯Bugly干货分享:Android机型适配之痛
- 转:关于Android机型适配这件小事儿
- 那些年,我们在Android机型适配上遇到的坑丨之Camera拍照时快门咔嚓声
- cocos2d-x android各机型 分辨率适配
- Android机型适配之痛
- Android机型适配之痛
- android机型适配问题
- Android机型适配
- android适配各种机型及其分辨率
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读,Android分辨率,Android多机型适配,Android屏幕分类,Android像素单位
- 关键(一): android不同机型的适配的解决方案之按比例伸缩篇
- Android机型适配之痛
- android适配不同机型需要注意的事项
- Android机型适配之软键盘和输入法
- android适配各种机型及其分辨率
- android适配各种机型及其分辨率
- Android不同机型图标适配问题
- android 多分辨率机型适配文件夹命名规则