Android开发屏幕适配方案

Android屏幕适配方案总结



 日常开发中,难免遇到屏幕适配的方案,网上也有很多方案,在这里本人只是做一个总结,以免日后使用

单位的概念

  • pt(point):磅,一个标准的固定长度单位,大小为1/72英寸,主要用于印刷与平面设计。1英寸=2.54厘米=72磅 1pt=0.03527cm
  • px(pixel):像素,组成屏幕图像的最小点,一个相对大小单位。同尺寸屏幕中像素越小越多,代表屏幕分辨率越高,反之越高。

    1pt=(ppi/72)*px

  • 屏幕尺寸(screen size):屏幕物理尺寸,指屏幕对角线的长度,而不是屏幕的长度或高度。单位为英寸,4英寸、5寸手机……

    Android把所有的屏幕大小分为四种尺寸:小、普通、大、超大(分别对应small、normal、large、extra large)

  • 分辨率(Resolution):屏幕拥有像素的总数以及屏幕水平(宽)和垂直(高)方向的像素数量。

    ?

  • ppi(pixels per inch):屏幕密度,指的是每英寸所拥有的像素数/每英寸像素。ppi数值越高,既代表显示屏能够以越高的密度显示图像。显示的密度越高,拟真度就越高。

  • dpi(dots per inch):印刷计数单位,指每英寸所能印刷出来的网点数。衡量打印机打印精度的主要参数之一,值越大,表明打印机打印精度越高。电子屏上ppi=dpi
  • dp(Density-independent Pixels):与屏幕无关的像素单位。Android开发虚拟单位,在每英寸160点的显示器上,1dp=1px;
  • sp(Scale-independentPixels):Android字体大小虚拟单位。在每英寸160点的显示器上,当文字大小为100%的时候,1sp=1px。如果字体设置为sp,字体可以根据系统大小调节而变化。

适配方案

  • 文件夹目录不同资源适配

    1、建立对应屏幕分辨率的文件夹,例如屏幕分辨率为540*960则可以建立对应资源文件夹values-960x540,这样就会根据分辨率进行读取对应的文件信息。

    2、考虑横屏和竖屏布局效果:Android有Layout-port和layout-land两个目录分别放置竖屏和横屏的两种布局文件,在手机屏幕发生转变,会自动调用相应布局文件。

    3、适配大屏幕,有些时候需要考虑类似平板的的屏幕进行适配,可以吧xml布局文件放到layout-large文件夹下,此文件夹的命名要和layout下布局一样,在屏幕要超过7寸的屏幕会自动读取large下的文件。(注意:在android3.2之前的版本试用)

    4、在android3.2之后的版本可以使用layout-sw600dp文件夹,sw是small width的简称,见名知意就是最小宽度的意思。这个文件夹的使用规则和layout-large一样,的那是这里代表宽和高的最小边为600dp的布局,也就是600dp以上的屏幕。

    5、布局别名:有时候在sw600dp文件和large文件夹或者多个文件夹下都需要进行维护布局文件,这时候我们同样写两份代码有点多余,此时需要对布局进行设置别名来维护共同的一套。在layout下可以只有2个文件一个是小屏幕默认的如:main.xml,另一个是大屏幕如:main_large.xml。之后再values下配置别名,

    默认的:values/layout.xml

    最少宽度600dp:values/layout-sw600dp/layout.xml 代码如下

    3.2之前大于7寸的:values/layout-large/layout.xml 代码如下

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="main" type="layout">@layout/main_large</item>
</resources>
  • 编写xml时的适配

    1、尽量使用wrap_content、match_parent、和weight。这样布局就会自动扩充。比如weight权重,用的时候可以按照比例进行分配,就不会出现显示不全等现象。

    2、使用相对布局,由于RelativeLayout是根据位置进行控制,所以我们可以选择对应的参照物,例如一个按钮设置在父布局的右边,这样的话这样的话,无论父布局无论是多宽或者多高,这个按钮都在父布局的右边。

  • 图片与资源的适配

    1、我们可以适配不同的values,可以设置多份屏幕都 dimens文件,因为在720的屏幕上1dp等于2px到1080屏幕上就等于3px,所以我们可以根据不同的dimens设置不同的px或者dp的值在dimens文件中。

    2、切不同尺寸的图进行适配。可以感觉umeng进行查看目前市场上最主流,用的最多的手机屏幕的信息,切对应的套图也是最常用的适配方式。但是图片也不建议过多,因为这样会对apk包的大小有影响。我们可以把这些图片进行压缩,顺便介绍一个压缩的工具网站,亲测效果还是不错的。

    顺便推荐一个压缩图片的工具网站,效果不错哦!

    3、9patch图片的使用,我们称之为点9,这个工具就在sdk下面,网上教程一大堆我就不叙述了。

  • 代码中进行适配
    1、我们在自定义控件中,可以根据代码获取到当前的屏幕密度,然后对空间的大小进行设置,这样的话设置的代码就是动态计算宽度和高度的。如我们用画笔花的字体,会在不同分辨率上呈现不同的大小,这时候可以通过获取分辨率然后计算出我们要设置的宽度和高度。
    
    2、其实在写代码时候经常会遇到在代码中计算的情况,例如我弹出一个单选框,需要动态设置高度,如果写死一个高度的话会对不同的选项有问题。
    

这样的话可以通过设置LayoutParams进行动态设置一个空间的宽、高等其他的属性进行动态适配。

  • 其他适配以后想到的会继续不断的补充。
时间: 2024-10-24 16:48:00

Android开发屏幕适配方案的相关文章

关于android 开发屏幕适配的个人见解

一.android 中各个单位的基本概念 px 是英文单词pixel的缩写,意为像素,屏幕上的点.我们通常所说的分辨率如480X800就是指的像素. 在设计领域中,像素是用来计算数码影像的最小单位.计算机中显示的图像并非连续的线条组成,而是由许多肉眼看不见的小点组成.如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小点所组成,这些小点就是构成影像的最小单位"像素".由于是最小的独立显示单位,px均为整数,不会出现0.5px的情况 in 表示英寸,是屏幕的物理尺寸.每英寸等于

Android开发屏幕适配知识点

1.了解几个概念 (1)分辨率.分辨率就是手机屏幕的像素点数,一般描述成屏幕的"宽×高",安卓手机屏幕常见的分辨率有480×800.720×1280.1080×1920等.720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素. (2)屏幕大小.屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位.比如某某手机为"5寸大屏手机",就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米. (3)密度(dpi,dots per inch:或

android屏幕适配方案

曾经看了android的屏幕适配方案,有非常多种.当中自己用到的一种是:先找一款主流的分辨率的android机,如:1080*1920的分辨率做基准,然后在这个基准上.调整好一切布局.图片.适配其它手机分辨率的手机.用百分比来调节.比如:在480*800的主流手机上,写了一个height=520,那么在480*800的手机上,这个控件的高度则为 480height = 520 * 屏幕高度/1920. 这种方案做屏幕适配. 项目遇到一个问题. 在剩余空间里.在1080*1920的手机上适配非常好

原创,实用Android 屏幕适配方案分享

(说来惭愧,这段时间忙项目,有时间也拿来调侃人生,好久没有写过技术文章了) 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案. 已经用在一款成熟互联网 应用中,效果还不错. 说起android开发,UI界面的多机型适配,一向是个很重要的问题. 网上这方面的文章很多,面试的时候也经常会问到,大部分的内容都很类似,无外乎用dp,sp 不要用px之类老生常谈的问题. 但是会说的居多,实际可以执行的可行方案,很少有人会. 我在面试的时候,很多人连drawab

Android 屏幕适配方案(百分比)

博客源址:Android 屏幕适配方案 1.概述 大家在Android开发时,肯定会觉得屏幕适配是个尤其痛苦的事,各种屏幕尺寸适配起来蛋疼无比.如果我们换个角度我们看下这个问题,不知道大家有没有了解过web前端开发,或者说大家对于网页都不陌生吧,其实适配的问题在web页面的设计中理论上也存在,为什么这么说呢?电脑的显示器的分辨率.包括手机分辨率,我敢说分辨率的种类远超过Android设备的分辨率,那么有一个很奇怪的现象: 为什么Web页面设计人员从来没有说过,尼玛适配好麻烦? 那么,到底是什么原

开源,原创,实用Android 屏幕适配方案分享

说来惭愧,这段时间忙项目,有时间也拿来调侃人生,好久没有写过技术文章了) 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android 屏幕适配方案.   已经用在一款成熟互联网 应用中,效果还不错 http://www.meilijie.com/ask/view/377116/http://www.meilijie.com/ask/view/377668/http://www.meilijie.com/ask/view/377838/http://www.meilijie.

Unity2D多分辨率屏幕适配方案(转载)

一下内容转自:http://imgtec.eetrend.com/forum/3992 此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕高度 2.Unity2D中摄像机镜头的尺寸决定了我们实际看到游戏内容的多少,在编辑器中我们

[原创]一种Unity2D多分辨率屏幕适配方案

此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. ---------------------------------------正式开始的分割线----------------------------------------- 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕

一种Unity2D多分辨率屏幕适配方案

此文将阐述一种简单有效的Unity2D多分辨率屏幕适配方案,该方案适用于基于原生开发的Unity2D游戏,即没有使用第三方2D插件,如Uni2D,2D toolkit等开发的游戏,NGUI插件不受这个方案影响,可以完美和此方案配合使用. ---------------------------------------正式开始的分割线----------------------------------------- 先说明一些基本的概念: 1.屏幕的宽高比Aspect Ratio = 屏幕宽度/屏幕