Android 手机适配过程中遇到的一些问题

来源:互联网 发布:炫酷个人网站php源码 编辑:程序博客网 时间:2024/06/05 22:45

手机适配,看到这几个字,无论作为android 新手还是有几年开发经验的你,相信内心都会有稍微的一丝悸动。是的,兼容性问题一直是困扰着我们开发者的一个世纪星难题,即使一个有丰富开发经验的开发者,遇到这个问题相信也是先眉头一紧,安卓手机不仅屏幕类型多,操作系统多,关键不同操作系统的手机厂商还不一样,你很可能发现两个手机,操作系统都是4.4的,为甚么界面和操作风格差这么大,因为中国的手机厂商像华为,小米,魅族等等,都是有自己的一套操作系统,虽然同样是安卓4.4,但他们对源码的修改程度都不相同,导致一个应用在这个手机上运行的好好地,在别的手机上就有可能出现意想不到的问题,所以android开发很大一部分工作就是手机适配,这里不仅包括UI上的适配,还有代码运行过程中出现的不同手机上的各种奇葩问题。下面就讲一下,最近我在手机适配过程中遇到的问题。

一款app手机适配的机型原则上选取市面上最近三年生产的手机,我们公司测试选取了将近20几款手机,有api不同的,最低版本选取到了17,向下兼容到4.2,再往下的手机都年代久远了,不考虑支持。有分辨率不同的,这个比较常规不做过多解释,还有不同厂商的,包括华为,魅族,小米,中兴等等。

遇到的问题大概分为以下几种:

1.比较常规的屏幕适配:

包括UI上,字体大小,间距等等,解决办法是要在dimens资源文件中声明,图片上要在不同的drawable下放置不同大小的图片。

2.操作系统不同:

最基本的,如果你gradle下配置的api为19,那么你的程序在安卓4.2上的手机上安装绝对是解析包错误,解决办法是将你的app下的gradle.build中的minSdkVersion向下调低点到17。到时这样就导致你的程序中一些方法报红,提示Call requires API is 19 (current min is 17),如果继续运行的话还可以编译成功,但如果不做处理的话,运行到4.2操作系统是,调用到该方法是会直接导致程序崩溃。

3.6.0权限问题

6.0系统为了保护用户的隐私安全,对授予权限做了修改,不是通过在AndroidManifest下声明权限的方式就可以了,而需要在代码中动态的申请权限。

4.手机厂商

不同手机厂商操作系统都是定制的,导致手机下拉状态栏的颜色也是不同的,主要分为两种,黑色的背景色白色的通知字体色,还有相反的白色背景色和黑色的字体色,如果你的消息是自定义布局通知的话,就要做好颜色的兼容适配,否则有的手机就会出现白色的背景色出现了白色的字体色,导致通知栏一片白色,显示区分不明显。解决方法参考这里http://blog.csdn.net/u011200604/article/details/52470770很全面。

5.手机性能

跟手机反应快慢也有关系,例如一个下拉刷新反应慢的可能出现下拉刷新和上拉加载的方法同时调用的情况,导致数据出现异常。这种可以让刷新和加载同步,在刷新的时候禁掉加载。

这是我在适配过程中遇到的一些问题,当然适配的工作远不止这些,相信你也遇到过各种奇葩的适配问题,欢迎留言一块儿讨论。

6.部分手机webview加载图片失败

这种情况产生的原因是原本你的webView加载的是https的链接,而这个链接里面包含了一个http链接的图片,结果导致有的手机加载失败,即使设置了webViewClient,重写了里面的onReceiveSslError方法,设置了handler.proceed()忽略证书也不行,在红米note3,图片加载失败。

解决办法:设置webview加载允许http,https混合模式

WebSettings settings = getSettings();settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);//设置开启混合模式

0 0
原创粉丝点击