关于android 适配的问题

关于android适配问题


相信大家在面试的时候都可能被问过各种各样的适配问题,楼主在以前面试的时候都会回答关于
图片像素这个方面的,其实不然,关于适配方面的问题其实还有很多,一些你可能知道,只是没有往这个方面联想


咱们先从低版本说起


1. 华为手机软键盘问题
不管是什么版本,华为手机的软件盘都会存在一些bug,比如在scrollview中存在edittext 控件,一般的想要在键盘弹出时同时提高edittext 在屏幕中的高度

只需要在manifest 的 的标签中添加上     就可以实现,

但是部分华为手机中确实是做不到的,

这个问题在网上有一些说明,我就不多做介绍了,提供一个 类的标签,可以很容易的搜索到  [AndroidBug5497Workaround] 这个问题google没有修复,
但是网上的一些大神给出了这个类,修复了该问题




2.ListView setHeaderView 与setAdapter 调用先后问题
我记得好像是从android 17 开始google优化了listview setHeaderView  setfooterView 方法 与 setAdapter 先后顺序的bug
如果在17版本以前 如果先调用setAdapter  再 调用setHeaderView  或者 setfooterView ,然后继续改变adapter 里的数据就会报错,
为了支持17版本以前,应该先调用 调用setHeaderView或者 setfooterView  然后再调用setAdapter  可以避免该错误出现




3.android 5.0 优化了时钟精确度问题,
这个是在以前项目中遇到的一个问题,服务器给我一个开始时间,和持续时间,我需要计算用户当前时间是否在持续时间内,这个东西在线上运行了很久都没有问题,
但是突然有一天一个投诉就到了我的头上,经过查找,发现是5.0后优化了时间精确度,我在以前时间上只是设置到了天,5.0之后必须精确的秒,否则会出现边缘的一天
的一些问题,




4.沉浸式状态栏 忘记从什么时候开始出的
这个问题是很多国内的厂商(小米)率先支持了这个功能,由于用了它之后视觉效果比较好,所以现在很多app都效仿这么做,这种解决方法在网上有很多,但是比较靠谱的
的githug上有一些,我现在使用的是  StatusBarCompat  还是比较好用的,如果觉得找资料麻烦的化 可以看一些我写过的东西
http://blog.csdn.net/qq_22256027/article/details/69261588   关于沉浸式状态栏的使用的相关代码






5.android 7.0动态获取权限问题
这个问题想必只要是还在做android开发的人一般都会接触到的一些问题,其实google做的没有那么绝,只是在debug 版本中限制了该权限的动态申请,relace版本没有
弄,估计是怕这个功能一上线,一大批app估计就疯了, 这个解决方法有推荐使用现成的api  github上有比较成熟的解决方案  EasyPermissions    可以很好的解决该类问题


6.android 7.0 加强了PopupWindow 使用限制
这个问题当时出现的情况是这样的,  pop.showAtLocation(parent, Gravity.NO_GRAVITY, width,height);  这个方法在android 7.0之前是好用的,可以在屏幕底部显示该popupWindow
(ps;能用这种方式实现底部弹出popupWindow的都不是一般人,真心太狠了)  后来在修改为 mPopupWindow.showAtLocation(parent, Gravity.BOTTOM, 0,0);该问题解决


7.android7.0分屏显示
android 7.0添加了同一个屏幕显示两个app的功能,具体应用场景可以自己去脑补,但是为了能兼容这个问题,在app的前期设计中就要注意一些坑,那就是布局不能写死,及时功能很少,

最多也就是大半个屏幕,但也要在外部使用scrollview做嵌套,从而让app在分屏时不至于显示不全的bug , 当然重中之重是在 manifest 的                        

  中添加该注释

 让该应用支持分屏操作


8.超大宽高比  
正常的手机宽高比差不多是 不会差很多  1080*1920  720*1080 等等,但是三星最近出了一款S8的炒鸡牛鼻的手机,宽高比例达到了 18:9
这个奇葩的比例就存在奇葩的问题, 那就是app在该手机中会存在不能沾满屏幕的问题,上面和下面都会存在黑边,解决这个问题也很好做
 在 manifest 中添加      该标签这个问题就可以解决了
 9.android8.0 交点问题强化
 现在市面上还没有几个android8.0系统的手机,华为的Mate10 可谓是其中比较牛的一款了,这么先进的8.0系统 google做了一些优化,那就是在ListView的item中如果使用
 android:focusableInTouchMode="true",会导致listview 的OnItemClickListeners 回调不能执行,在项目中一般会出现的问题是,为了listview 的美化,item中的文字
 不能存在换行的情况,为了解决该问题就会用到跑马灯形式的textview 如果在textview的属性中如果这么设置了,就会导致该问题.  其实这个问题还有一个很早就会有的反面教材
 那就是在listview 的item布局中存在 checkbox ,如果不将checkbox 的android:focusableInTouchMode="false" 这么写的话,item 的点击事件无法回调,只不过在8.0之前没有在

 textview上加强

10.android 8.0 取消了大部分静态注册广播的功能,也就是说想要在app中使用广播的话必须手动去维护 receiver ,虽然写起来比较简单,但是做法让人感到很厌烦,推荐使用eventBus 省时省力,最主要的是好用



这些就是我在平时工作中遇到的一些比较小,但是确实比较坑的适配问题,如果以后再遇到关于适配方面的问题大家可以借鉴一下,欢迎大家留下自己的想法,


谢谢!!!
 
 

你可能感兴趣的:(关于android 适配的问题)