适配:即当前应用在相同的手机上面显示相同的效果。适配前需要首先确定当前手机所属像素密度类型(如: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. 库函数strlen源码重现及注意问题

    首先直接上源码: size_t strlen (const char * str) { const char *eos = str; while(*eos++); return(eos - str - ...

  2. python基础教程

    转自:http://www.cnblogs.com/vamei/archive/2012/09/13/2682778.html Python快速教程 作者:Vamei 出处:http://www.cn ...

  3. 查看 并发请求数及其TCP连接状态

    服务器上的一些统计数据: 1)统计80端口连接数netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数ps -ef|grep httpd|wc ...

  4. laravel的模块化是如何实现的

    laravel的模块化是如何实现的 在laravel提供的官方文档上,有一个这样的名词 服务提供者,文档中介绍了它在laravel框架中的角色,以及如何使用它,但却没有讲明服务提供者的本质--它是为了 ...

  5. DIV+CSS规范命名

    一.命名规则说明: 1).所有的命名最好都小写2).属性的值一定要用双引号("")括起来,且一定要有值如class="divcss5",id="div ...

  6. IIS7性能优化:启用浏览器本地缓存

    原文地址:http://jingyan.baidu.com/article/597035521b96e88fc00740af.html

  7. Spring、Struts2+Spring+Hibernate整合步骤

    所使用的Jar包: Hibernate: Spring(使用MyEclipse自动导入框架功能) Struts2: 注解包和MySql驱动包: 1.配置Hibernate和Spring: <be ...

  8. [C#]DataTable常用操作总结

    ].RowState == DataRowState.Unchanged)        {            //Your logic        }        //⑩Convert to ...

  9. jquery第四期:对象转换的小实例

    为了更清晰的看懂jquery对象是一个数组,我们这一期来改变每一个<li>中的值,在前面加上序号. 代码如下: <!DOCTYPE html PUBLIC "-//W3C/ ...

  10. 使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、播放列表)

    前言 打造一款完整可用的Android播放器有许多功能和细节需要完成,也涉及到各种丰富的知识和内容,本章将结合Fragment.ViewPager来搭建播放器的主界面,并实现本地播放基本功能.系列文章 ...