安卓-屏幕适配方式

适配:即当前应用在相同的手机上面显示相同的效果。适配前需要首先确定当前手机所属像素密度类型(如:xhdpi、hdpi、mdpi等)

像素密度:每英寸上分布的像素点个数,单位(dpi,ppi),利用勾股定理可算出。

根据google官方文档,像素密度主要分为6个等级。

暂时不考虑xxxhdpi的情况,上图翻译成中文,大概就是这个意思:

ldpi:120dpi,dp与像素转换关系为:1dp =
0.75px

mdpi:160dpi,dp与像素转换关系为:1dp =
1px

hdpi:240dpi,dp与像素转换关系为:1dp =
1.5px

xhdpi:320dpi,dp与像素转换关系为:1dp
= 2px

xxhdpi:480dpi,dp与像素转换关系为:1dp
= 3px

接下来,简单介绍下现在市面上常用的五种适配方式

1、图片适配

2、dimens适配

3、布局文件适配

4、java代码适配

5、权重适配

适配方式一:图片适配

不同像素密度的手机加载工程资源文件(res)中不同的资源图片

例如:mi3手机,主屏尺寸是5英寸,主屏分辨率:1920x1080像素

根据勾股定理可算出其像素密度:Sqrt(1920^2+ 1080^2)/5
≈ 441dpi,即mi3的屏幕像素密度约等于441dpi。

根据google官方文档中对像素密度的划分,mi3的像素密度最接近xxhdpi,因此,对mi3这款手机做图片适配的话需要按照xxhdpi单独切图。

适配方式二:dimens.xml文件适配

dimens.xml存在于工程资源(res)文件夹中不同values(如:value-1280x720、value-800x480、values-xhdpi)文件夹下,可用于指定控件大小,不同像素密度手机加载不同values文件夹下的dimens.xml文件,通常用dimens适配,需要写多个文件,去适配市面上主流的机型。

例如:360手机助手使用dimens适配

适配方式三:布局文件适配

不同分辨率的手机,加载不同的布局文件以达到适配效果。

创建多个layout(如:layout-1280x720、layout-800x480)文件夹用于存放不同像素密度手机所需布局文件。

适配方式四:java代码适配

通过android相应api获取当前手机的宽高像素值,按比例分配屏幕中控件的宽高以达到适配效果。

核心代码(将这个文本框的宽高设置为屏幕宽高的一半): 

TextView tv = (TextView) findViewById(R.id.tv);
//获取封装当前手机屏幕信息对象,用于存放宽高值
DisplayMetrics metrics = new DisplayMetrics();
//给当前屏幕设置宽高
getWindowManager().getDefaultDisplay().getMetrics(metrics);
//获取屏幕高度
int srceenHeight = metrics.heightPixels;
//获取屏幕宽度
int srceenWidth = metrics.widthPixels; 

//宽高各占50%
RelativeLayout.LayoutParamslayoutParams = new RelativeLayout.LayoutParams( (int)(srceenWidth*0.5+0.5),(int)(srceenHeight*0.5+0.5));
tv.setLayoutParams(layoutParams);

适配方式五:权重适配

通过android中线性布局中的属性(layout_weight权重)
按比例来分配,已达到适配效果。

例如:两个按钮平分屏幕的宽度

<Button
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"/>

< Button
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="wrap_content"/>

时间: 2024-08-29 23:56:10

安卓-屏幕适配方式的相关文章

Android 屏幕适配方式

适配:即当前应用在相同的手机上面显示相同的效果.适配前需要首先确定当前手机所属像素密度类型(如:xhdpi.hdpi.mdpi等) 像素密度:每英寸上分布的像素点个数,单位(dpi,ppi),利用勾股定理可算出. 暂时不考虑xxxhdpi的情况,上图翻译成中文,大概就是这个意思: ldpi:120dpi,dp与像素转换关系为:1dp = 0.75px mdpi:160dpi,dp与像素转换关系为:1dp = 1px hdpi:240dpi,dp与像素转换关系为:1dp = 1.5px xhdpi

安卓屏幕适配

先写结论 布局适配: 1.不使用相对布局,尽量使用百分比布局 2.尽量使用match_parent 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如果是纯色背景,尽量使用android的shape 自定义 5.如果需要在特定分辨率下适配,可以在res目录上新建layout-HxW.xml的文件夹.比如要适配1080*1800的屏幕则新建layout-1800x1080.xml的文件夹 图片适配: 1.尽可能使用9妹图 2.重要的图片或者较小的图标,按3:4

安卓屏幕适配最全总结

1,图片适配,不同分辨率的图片放到对应分辨率的drawable文件夹下,很少有,一般仅一些比较常用且[重要]的图片会[切几套图] 2,其他资源的适配,比较字体大小.间距等,可以定义不同分辨率的[values]文件夹,然后针对不同的分辨率设置不同的[demin]值,layout中对应的值取demin里的值. 3,layout适配,和图片适配一下,一般很少用,除非某些[重要]的布局需要保证效果,或需要在[平板]上做适配 4,尽量使用线性布局,相对布局,如果屏幕放不下了,可以使用ScrollView,

屏幕适配方式的介绍

1. 图片适配(根据手机屏幕的像素密度加载不同文件夹中的图片) 手机屏幕的像素密度:一英寸中包含的像素点的个数 例如:480x800 的像素密度 = 480^2+800^2 开方 = 932.95 / 4 = 233.23dpi 在开发的时候一般不会在每个文件夹中放置一套图片,一般是确定一个分辨率制作一套图,然后按照 android 开发规则,让 android 自动适配其他分辨,如果有图片无法适配,再去制作相应的图片到不同的分辨率对应的目录中进行图片适配 2.dimens.xml 文件适配(根

Android最简单屏幕适配,项目用dp,sp的只需加一行代码

AutoScreenAdaptation 安卓屏幕适配 项目直接用dp和sp的可以不用改动 直接加入一句代码即可实现适配 还未确定会不会有兼容性问题和性能问题 需要时间测试 目前测试过模拟器的不同分辨率和不同dpi基本效果不会差太多 旋转屏幕 布局会按横版的大小缩放 视图也不会乱 支持x  y适配 效果图 720x1280 480x800 主要代码 public classScreenAdaptation { privateApplication.ActivityLifecycleCallbac

UIKit框架(8)屏幕适配(一)

本篇本章介绍iOS开发中经常使用的几种屏幕适配方式,包括: 通过frame进行适配 通过AutoResizing进行适配 使用AutoLayout进行适配 使用ZXPAutoLayout进行适配 ... 这里面最重要的是:通过frame适配以及AutoLayout 屏幕适配的目的 目的一: 不同型号的iPhone和iPad可能拥有不同大小的屏幕(点坐标系不同) 发布一款App时,不能只针对一种规格的屏幕,应当在不同大小屏幕的设备都能够运行 目的二: iPhone支持三个方向的旋转,iPad支持四

转: 安卓自动缩放布局,解决屏幕适配问题

转:http://blog.csdn.net/ljh102/article/details/45536293 2015.8.4 更新: 增加参数custom:autoScaleType 设置缩放模式,可以设为“fitWidth”,"fitHeigth" 和 "fitInside".分别代表缩放至宽度匹配,缩放至高度匹配以及缩放至适合容器内部,默认为"fitInside". 做过安卓开发的都知道,屏幕适配是一件非常困难的事情. Google官方的解

iOS屏幕适配的几种方式

屏幕适配问题共有四种解决方案:(1)根据屏幕宽高写控件frame(下策);(2)Autoresizing的使用(中策);(3)AutoLayout的使用(上策);(4)sizeClasses+AutoLayout的使用(上上策).下面将会分别来进行叙述. (1)根据屏幕宽高写控件frame 利用宽高比,在不同的屏幕中来进行对控件的位置与控件的宽高进行等比例缩放.选定一个型号的屏幕的宽高为基准,进行等比例缩放.例如以iPhone6或者iPhone6s为基准. 其宽高分别是375与667.Iphon

关于安卓3.0以上的系统屏幕适配问题的一些心得

首先,关于dp,px,dpi 等这些老生常谈的单位就不做详细的介绍了.这些个单位的介绍百度一抓一大把. 再讲解我自己对安卓3.0以上屏幕适配问题的理解以前,先介绍一下谷歌对安卓开发屏幕适配提的一些建议 Using new size qualifiers The different resource configurations that you can specify based on the space available for your layout are summarized in t