Android下屏幕适配
来源:互联网 发布:淘宝店铺装修素材包 编辑:程序博客网 时间:2024/05/23 10:36
什么是适配
按照以上计算方式,大致可以将市场上的手机划分为5个像素密度等级,具体如下:
如何适配
适配方式2:dimens.xml文件适配
适配方式4:java代码适配
适配方式5:权重适配
适配即当前应用在相同的手机上面显示相同的效果。
适配前需要首先确定当前手机所属像素密度类型(如:xhdpi、hdpi、mdpi等),下面以华为G700、模拟器为例,讲解如何计算像素密度。
案例一:
案例二:
按照以上计算方式,大致可以将市场上的手机划分为5个像素密度等级,具体如下:
(1) ldpi:120dpi,像素密度与dp转换关系为:1dp = 0.75px
(2) mdpi:160dpi ,像素密度与dp转换关系为:1dp = 1px
(3) hdpi:240dpi,像素密度与dp转换关系为:1dp = 1.5px
(4) xhdpi:320dpi,像素密度与dp转换关系为:1dp = 2px
(5) xxhdpi:480dpi,像素密度与dp转换关系为:1dp = 3px
下面以华为手机G700和模拟器的对比,讲解如何进行屏幕适配,具体方式如下:
适配方式1:图片适配不同像素密度的手机加载工程资源文件(res)中不同资源图片,以手机G700和模拟器为例,图片的布局代码如下所示:
若使用G700(xhdpi)加载a.jpg文件,该文件位于res/drawable-xhdpi文件夹下,显示效果如下:
若使用模拟器(hdpi)加载a.jpg文件,该文件位于res/drawable-hdpi文件夹下,显示效果如下:
dimens.xml存在于工程资源(res)文件夹中不同values(如:value-1280x720、value-800x480)文件夹下,可用于指定控件大小,不同像素密度手机加载不同values文件夹下的dimens.xml文件,使用方式如下:
模拟器(hdpi):加载dimens.xml资源文件,位于res/value-800x480文件夹下
根据上述hdpi dp和px的转换关系1dp = 1.5px,则160dp = 240px,当前控件宽度应该位于屏幕中间位置。
G700(xhdpi):加载dimens.xml资源文件,位于res/value-1280x720文件夹下
根据上述xhdpi 中dp和px的转换关系1dp = 2px,则180dp = 360px,当前控件宽度应该位于屏幕中间位置。
G700(xhdpi)显示的图片效果如下所示:
模拟器(hdpi)显示的图片效果如下所示:
适配方式3:布局文件适配不同分辨率的手机,加载不同的布局文件已达到适配效果。创建多个layout(如:layout-1280x720、layout-800x480)文件夹用于存放不同像素密度手机所需布局文件。
模拟器(hdpi):加载activity_main.xml布局文件,位于res/layout-800x480文件夹下:
G700(xhdpi):加载activity_main.xml布局文件,位于res/layout-1280x720文件夹下:
G700(xhdpi)显示的图片效果如下:
模拟器(hdpi)显示的图片效果如下所示:
通过android相应api获取当前手机的宽高像素值,按比例分配屏幕中控件的宽高以达到适配效果,下面是布局和实现功能的核心代码:
布局文件
activity中oncreate核心代码:
G700(xhdpi)显示效果如下:
模拟器(hdpi)显示效果如下:
通过android提供的(权重)剩余空间分配,达到适配效果。布局文件如下所示:
G700(xhdpi)显示的图片效果如下所示:
模拟器(hdpi)显示的图片效果如下所示:
0 0
- Android下屏幕适配
- Android下屏幕适配
- android下屏幕适配
- Android下屏幕适配
- Android下屏幕适配
- Android下屏幕适配
- android下的屏幕适配
- Android下的屏幕适配
- Android 屏幕适配(下)
- 关于Android设备下的屏幕适配问题
- 【Android】屏幕适配
- android屏幕适配
- android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- 聚类笔记(上):基本概念
- onCreateOptionsMenu 不执行
- HDU 4819 Mosaic(二维线段树+单点更新)
- ios URL 中文乱码问题
- /etc/default/jenkins
- Android下屏幕适配
- 利用阿里云搭建后台开发环境
- Java学习之多线程Ⅱ
- linux下搭建java eclipse开发环境
- NYOJ 38 布线问题 (最小生成树 Kruskal)
- NLTK使用中NameError: name 'FreqDist' is not defined问题解决
- 折半查找
- OC基础-NSValue类簇-将复杂数据类型保存为对象
- leetcode-First Bad Version