Android的适配问题
来源:互联网 发布:小米5标配版网络是几g 编辑:程序博客网 时间:2024/05/17 02:12
作为一个菜鸟,很多理解可能不到位,请大家指点。
首先:适配问题分两种,一种是各个版本间适配,一种是屏幕分辨率适配。
下面就针对这两种适配分别进行说明。
各个版本间适配:
由于Android版本的不断升级,大部分版本的手机由于一部分原因不能完成升级。所以这时我们就应该考虑到手机端应用的兼容性问题。
我们可以使用高版本的sdk进行开发,在程序运行时,对版本进行判断,高版本使用高版本的API,低版本使用低版本的API
Android为我们提供了一个常量类Build,其中最主要是Build中的两个内部类VERSION和VERSION_CODES,
VERSION表示当前系统版本的信息,其中就包括SDK的版本信息,用于成员SDK_INT表示;
对于VERSION_CODES在SDK开发文档中时这样描述的,Enumeration of the currently known SDK version codes. These are the values that can be found in SDK
. Version numbers increment monotonically with each official platform release.
其成员就是一些从最早版本开始到当前运行的系统的一些版本号常量。
在我们自己开发应用过程中,常常使用如下的代码形式判断运行新API还是旧的API:
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
- {
- // 包含新API的代码块
- }
- else
- {
- // 包含旧的API的代码块
- }
但是上面的并不能完全解决问题,因为部分手机比如小米,会对现有的android系统进行改造,这也会造成一定的问题,要解决这种问题就需要
(1)相关更改文档(2)你的经验。
屏幕分辨率适配:
(1)使用webview
在使用webview时你需要确定是由前端同学使用css来控制字体大小还是由你来控制。
如果是你来控制,那么你可以通过以下函数进行判断并进行适配:
- <span style="font-size:18px">//适配不同密度问题
- int screenDensity = getResources().getDisplayMetrics(). densityDpi ;
- WebSettings.ZoomDensity zoomDensity = WebSettings.ZoomDensity. MEDIUM ;
- switch (screenDensity){
- case DisplayMetrics.DENSITY_LOW :
- zoomDensity = WebSettings.ZoomDensity.CLOSE;
- break ;
- case DisplayMetrics.DENSITY_MEDIUM :
- zoomDensity = WebSettings.ZoomDensity.MEDIUM;
- break ;
- case DisplayMetrics.DENSITY_HIGH :
- zoomDensity = WebSettings.ZoomDensity.FAR;
- break ;
- }
- newsInfoWebview .getSettings().setDefaultZoom(zoomDensity) ;</span>
(2)不使用webview
1、分辨率无关
(1)使用密度无关的像素。
由于android设备屏幕尺寸和分辨率的不同,基于屏幕的DPI可以使仙童数量的像素对应不同设备上的不同物理尺寸。因此我们使用dp来指定尺寸使用sp来指定文本大小。
(2)像素密度的资源限定符
位图图像的缩放会导致图像细节的损失(缩小)和图像的模糊(放大)。巍峨使应用程序的界面清晰,最好为不同像素的密度提供多个图像资源。
res/drawable-ldpi 为120dip左右的尺寸提供低密度资源
res/drawable-mdpi 为160dip左右的尺寸提供中等密度的资源
res/drawable-tvdip 为213dip左右的尺寸提供中高密度资源;这是在API版本13中为了优化面向电视的应用程序而引入的。
res/deawable-hdpi 为240dpi左右的屏幕提供高密度资源
res/drawable-xhdpi 为320dpi左右的屏幕提供超高密度的资源
res/drawable-nodpi 用于不管宿主屏幕密度如何都不进行缩放的资源
2、为不同的屏幕大小提供支持和优化
没有必要为每个特定屏幕创建不同的绝对布局,最好使用下面的方法:
(1)保证所有的布局都能在一个合理的范围内进行缩放。(比如使用wrap_content或者fill_parent)
(2)创建一组范围重叠的备选布局来满足所有可能的屏幕配置。
android使用long和notlong修饰符来为正常的宽屏显示提供有化布局
res/layout-long-land/ //为宽屏横屏模式提供布局
res/layout-notlong-port/ //为非宽屏竖屏模式提供布局
更多的修饰符请查询官网文档。
3、创建可缩放的图形资源
(1)使用纯色
(2)使用<shape>标签制作形状
(3)使用NinePatch图像
.9.png图像左侧和上侧用于标识拉伸区域,右侧的下侧用于标识内容区域
4、灵活使用布局layout。
比如当需要三个按钮均匀的分布在一行时,我们可以使用linearlayout 并设置权重都为1。如果使用relativelayout就没有这么方便了。
如果上面让你觉得复杂,你可以让适配最小的屏幕,然后在所有的屏幕上都只显示那么大的部分,但是这样用户体验也相应的下降很多。
- Android的适配问题
- Android 的适配问题
- android图片资源的适配问题
- android的屏幕适配问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android图片资源的适配问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- android适配各种分辨率的问题
- mysql 将时间戳直接转换成日期时间
- Oracle执行计划
- win7中如何解决“该项不适用于在指定状态下使用”
- PHP GB库
- org.json XML和Json互转
- Android的适配问题
- PHP SoapClient 解决多个namespace的问题。
- 享元模式
- 72MainActivity中群聊的监听
- hdu 1257 最少拦截系统 (贪心)
- 注意了!预计2015年将有8大投资陷阱。
- Segmentation Fault in Linux 原因与避免
- [问题]Warning: xctool-0.2.2 already installed, it's just not linked
- UML序列图