问题:
安卓TV项目,做新系统适配,接手的之前同事,关于菜单类的项目,在8.0之前的安卓系统中,此项目没有出现过任何问题,界面效果与控制都没有什么漏洞或不和谐的因素发生,但是在8.0的系统中,却发现菜单页面的焦点会乱掉,也仅仅只有列表的左边一点会乱掉,焦点有断层的现象
布局:
列表的布局结构: scrollview+LinearLayout+Framelayout,FrameLayout是item的容器,内有能获取焦点的marqueenText 和图片,整体布局上,从外到内依次是 ViewFlipper-->viewpager,所有page均放在viewpager中, 进入菜单时,viewFlipper会有一个向左平移的动画
过程:
拿到此问题,从页面布局,代码适配,焦点控制等方面都做了检测,但是都一一排除,最后发现,只要viewFlipper不做平移,就不会出现这个焦点断层错乱的问题,当时也没多想,本能的认为动画方面不会出问题, ps:我们这边是从硬件,系统定制,到软件,都由我们公司完成; 但是认为最不可能的事情就是最有可能的,经同事提醒,尝试修改了下viewFlipper的动画,因为之前的动画在JAR包中进行了封装加密,无法得知它是属于什么动画类型, 我用属性动画objectAnimator重新定义了一下动画,运行起来后,发现问题居然解决了,解决了......... ,所以,问题是出在了动画上了? 要知道同样的一套代码在之前的系统中都没有出现过这个问题, 猜想可能之前用的是补间动画,当viewFlipper做了平移后,只是将显示效果进行了平移,并没有将子view的属性进行平移,也就是没有将焦点的范围进行平移才导致的这个问题, 但此类现象在之前的系统中又没有发生,对这一点很不理解,网上查了下8.0对动画方面的优化和新特性,也没有查到什么有用的信息,看来这个问题,一时无法得到准确的解释了
结语:
布局的焦点问题,查找思路为xml布局是否合理,代码处理是否得当,动画是否会对界面有影响,综合考虑,查找出问题