适配:即当前应用在相同的手机上面显示相同的效果。适配前需要首先确定当前手机所属像素密度类型(如:xhdpi、hdpi、mdpi等) 像素密度:每英寸上分布的像素点个数,单位(dpi,ppi),利用勾股定理可算出。

暂时不考虑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="" android:layout_height="wrap_content">

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

Android 屏幕适配方式的更多相关文章

  1. Android屏幕适配和方案【整理】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这里只是根据参考资料整理下,具体内容请阅读参考资料. 原型设计图 推荐1倍效果图,即采用 720 * 360 大小( 1280 *7 ...

  2. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  3. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  4. Android屏幕适配全攻略(最权威的官方适配指导) (转)

    招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...

  5. Android 屏幕适配(一)百分比布局库(percent-support-lib) 解析与扩展

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/46695347: 本文出自:[张鸿洋的博客] 一.概述 周末游戏打得过猛,于是周 ...

  6. 【转】Android屏幕适配全攻略(最权威的官方适配指导)

    原文网址:http://blog.csdn.net/jdsjlzx/article/details/45891551 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的 ...

  7. Android屏幕适配全攻略(最权威的官方适配指导)

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入 ...

  8. Android 屏幕适配方案

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45460089: 本文出自:[张鸿洋的博客] 1.概述 大家在Android开发 ...

  9. 实用Android 屏幕适配方案分享

    转载地址:http://blog.csdn.net/gao_chun/article/details/45645051 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android ...

随机推荐

  1. jsp中添加弹窗口并且实现向后台双向传递数据

    思路:使用jquery-easyui框架实现弹出div,在jsp初始化时从后台获得数据初始化div中的form表单元素的value属性,从而获得后台数据.在点击确定按钮时使用ajax向后台发送数据. ...

  2. Picasso 加载图片到RelativeLayout之解决方案

    Picasso 加载图片到ImageView 或者自己的自定义View都是可以直接调用对应API的,但是用into(0直接也加载到RelatieLayout就不好使了,可以这样来: Picasso.w ...

  3. 《UNIX网络编程》UDP客户端服务器:消息回显

    udp写的程序相比tcp简单一些,在socket()与bind()之后,不需要connect(),accept()等步骤,直接简化为了sendto()与recvfrom(). 编译运行同前面的tcp. ...

  4. MVC 返回ActionResult 类型

    1. Content() 返回文本类型,比如"Hello World!". 2.File() 返回文件类型,如PDF,JPG. 3.HttpNotFound() 返回404 HTT ...

  5. 图片和提交servlet的相对和绝对路径

    xx.jsp在根目录下,图片的路径为:<img height="33" src="images/enter.gif" width="148&qu ...

  6. nodejs递归创建目录,同步和异步方法

    nodejs递归创建目录,同步和异步方法.在官方API中只提供了最基本的方法,只能创建单级目录,如果要创建一个多级的目录(./aaa/bbb/ccc)就只能一级一级的创建,感觉不是很方便,因此简单写了 ...

  7. aix rksh 执行CLI命令行限制

    su padmin -C "lsdev -dev hdisk9 -attr| grep unique_id"rksh: lsdev: 0403-006 Execute permis ...

  8. iOS 的 APP 如何适应 iPhone 5s/6/6Plus 三种屏幕的尺寸?(转)

    原文:http://www.niaogebiji.com/article-4379-1.html?utm_source=tuicool 初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 ...

  9. 精通CSS+DIV基础总结(一)

    这段时间学习了玩了DIV+CSS的视频,感觉效率不高.前边的Javascript总结的不好,但是看了后边的JQuery,觉得学习的再多一点,再进行Javascript的总结.DIV+CSS总结,估计会 ...

  10. ASP.NET MVC 中将FormCollection与实体间转换方法【转】

    将Action动作中传递的FormCollection转变成对应的实体,可以使用Controller的TryUpdateModel()方法. 示例如下: [HttpPost] public Actio ...