android中不同手机分辨率适配问题

在项目开发的过程中,同一个布局对应不同的手机会显示出不同的效果。导致这个现象产生的原因是不同手机的分辨率不同。在android sdk提供的帮助文档中,我们可以看到各种手机的分辨率和对应的屏大小。QVGA (240x320),WQVGA400(240x400),WQVGA432 (240x432),HVGA (320x480),WVGA800 (480x800),WVGA854 (480x854)。

目前android手机的分辨率大致就是帮助文档中描述的几种。我们可以用两种方式进行不同手机的适配。一种是在java代码中,另外一种是在xml文件中。具体使用哪种方式更有效更合适,要看具体的情况而定。

在以前的项目中,我之前做过关于历史聊天记录,每页显示条数的匹配。不同的手机,每页可以显示历史记录的条数是不同的。我采用的是在java代码中做匹配。不同分辨率的手机,他们都有固定的屏高。例如,480x800,屏高是800。240x320,屏高是320。根据屏高为判定条件,为每一页显示历史记录的条数做一个限制。我个人觉得,在java代码中做手机匹配,要看匹配的布局中,控件是否太多,不太多,可以在java代码中根据不同的情况修改,否则,java代码将会显得很冗长,修改起来也很麻烦。

在xml进行手机匹配,主要是针对布局中控件太多,不方便在java代码中修改的情况。在xml中解决不匹配问题很简单,对于不同手机的分辨率,建立对应的layout文件即可。例如:480x800,之间建立layout-800x400,240x320,建立layout-320x240。特别注意:大的写在前面,例如800,320,小的写在后面,例如480,240。建立了相应的layout后,还要在不同的手机上调整布局中的控件大小和位置。

在本次项目中,我负责不同手机视图的匹配问题,我选择的是xml匹配方式,结果发现按上面的方式做了之后,对应分辨率的手机的显示没有任何的效果,后来,我查看帮助文档后,发现必须要在androidmainfest中进行如下代码的配置:

<supports-screens 
android:smallScreens="true" 
android:normalScreens="true" 
android:largeScreens="true" 
android:xlargeScreens="true" 
android:anyDensity="true" />

如果没有这几行代码,不管你怎么调整layout中的控件,对应分辨率的手机是没有任何效果的。注意:由于android版本的不同,有些版本不支持xlargeScreens,可以直接将android:xlargeScreens="true"去掉。

来源:http://blog.csdn.net/lgl125/article/details/7558179

Android学习九:屏幕自适应的更多相关文章

  1. android学习九 对话框碎片

    1.android的对话框是异步的,对话框创建后马上执行下面的代码.好处:      a.通过实现对话框的回调方法反馈用户与对话框的交互.    b.能够在代码中清楚对话框.     2.碎片对话框基 ...

  2. Android学习九---OpenCV4android org.opencv.feature2d

    不管是在识别,配准等应用中,提取图像的特征都是很关键的一环,提取特征是先找出图像的关键点(如角点,边缘点等),然后用描述子来描述这些点,最后整幅图像就可以表示成一个特征向量,特征向量就可以利用在后续识 ...

  3. 4种必须知道的Android屏幕自适应解决方案

    文章来源:http://blog.csdn.net/shimiso/article/details/19166167 demo下载:http://www.eoeandroid.com/forum.ph ...

  4. 九、Android学习第八天——广播机制与WIFI网络操作(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...

  5. 四种必须知道的Android屏幕自适应解决方案

    一.细说layout_weight     目前最为推荐的Android多屏幕自适应解决方案.     该属性的作用是决定控件在其父布局中的显示权重,一般用于线性布局中.其值越小,则对应的layout ...

  6. 【转】 Pro Android学习笔记(四十):Fragment(5):适应不同屏幕或排版

    目录(?)[-] 设置横排和竖排的不同排版风格 改写代码 对于fragment,经常涉及不同屏幕尺寸和不同的排版风格.我们在基础小例子上做一下改动,在横排的时候,仍是现实左右两个fragment,在竖 ...

  7. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  8. Android学习笔记之滑动翻页(屏幕切换)

    如何实现手机上手动滑动翻页效果呢?呵呵,在这里我们就给你们介绍一下吧. 一般实现这个特效会用到一个控件:ViewFlipper <1>View切换的控件—ViewFlipper 这个控件是 ...

  9. .Net语言 APP开发平台——Smobiler学习日志:开发APP时,如何快速地实现屏幕自适应

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.属性介绍 设置控件在客户端屏幕可见并超出客户端屏幕时,是否自动调节高度以适应屏幕高 ...

随机推荐

  1. clip:rect矩形剪裁

    clip:rect(top right bottom left);依据上-右-下-左的顺序提供自图片左上角为(0,0)坐标计算的四个偏移数值,其中任一数值都可用auto替换. 矩形剪裁 还需要绝对定位 ...

  2. 关于升级xcode8

    升级xcode8已是必然,升级ios10的用户不能说大有人在,应该也不会少,如果不升级xcode8,上架最新的包,那么可能应用在ios10 上是不支持的.so,这些xcode8的新特性,你应该了解!! ...

  3. http 请求详解大全

    HTTP 100 Continue继续 101 Switching Protocols切换协议 200 OK正常 201 Created已创建 202 Accepted已接受 203 Non-Auth ...

  4. ObjC宏定义-预编译小功能

    以前看来#号,好像只是预编译,原来它还可以有跟Swift中"\( )"的拼接功能 例如: #define string(x) #x 意思就是 string(x) = "x ...

  5. WebDriver 常见Exception处理

    1. org.openqa.selenium.WebDriverException: unknown error: unhandled inspector error: {"code&quo ...

  6. valueForKeyPath常用用法

    valueForKeyPath和valueForKey有一些类似,但也有一些不同的地方.这里就简单说一下valueForKeyPath一些不同的地方. 举例来说: 1.valueForKeyPath可 ...

  7. 注意linux下面的命令行,要将PATH声明出来

    export PATH=/apps/svr/maven/bin:/apps/svr/jdk7/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/s ...

  8. BZOJ 3176 Sort

    先一遍reverse+逆序对个数. 要开long long啊. #include<iostream> #include<cstdio> #include<cstring& ...

  9. 球形环境映射之angular与latlong格式互换

    这么做只是纯好奇,因为这种格式互换在实际中是没有意义的,下面映射方式互换的贴图说明了一切. 刚开始打算使用matlab进行贴图映射方式的转换,但许久不用很是生疏,而且生成图片要考虑很多事情,尤其是生成 ...

  10. HDU 4920 居然会超时

    题意:求两个n*n的矩阵相乘的结果,得出的每个元素%3: 分析:2000ms然后n的范围是800,我们自己估算的时间复杂度并不会超时,但是结果就是超时了. #include <cstdio> ...