Android tv 动画效果faq (放大动画 与ScrollView滚动照成 页面漂移交错)

最近在捣腾android tv上的动画,之所以说是Android tv 上的动画是因为 Android 盒子的性能普遍会比手机差几个档次。价格也是差了n倍数。所以一些手机上不会出现的问题在盒子上就容易出现。


问题1

Android 设备默认的动画刷新frame率是10ms 但是很多设备都是大于10ms的比如说米四是20ms左右,而乐视盒子是33ms左右。有些盒子是不支持动画的,就是动画 start后 立马就end 了。那么问题来了,普通的视图是没问题的帧刷新率高点低点,但是当有srcoll时,如果同时执行就会出现视图错位,在scroll的同时动画执行了放大缩小或者移动,这时就会错位漂移。


问题2

其实是同一个问题。在viewpager 上下翻页时的  内部view元素的动画会造成漂移。

都是应为scroll 造成的


解决思路:

让scroll 完成了再执行动画,先mark下后续进行补充


问题3,:ScrollView 里放LinearLayout 子view 在ScrollView 滚动时,放大的动画也执行了,如果两个同时执行会导致页面的交叉漂移。

解决方法是 让ScrollView 先滚动滚完 再执行动画  就不会飘

思路1、当获取到焦点时稍微延时一会100ms 再放大(懒惰的做法,会造成ui反应慢一点,不是很舒服)

思路2、监听外部的ScrollView滚动停止了再放大,(实际效果也是有点慢)

监听ScrollView的停止,采用反射的方法参考:http://johnnyshieh.github.io/android/2015/07/17/scrollview-detect-scroll-stop/


思路3、自己重写LinearLayout 注册一个Scroller 滚动器,自己完成滚动效果,(结果比较理想)

自定义容器中实现Scroller参考该博客:http://ipjmc.iteye.com/category/167926

对于判断一个视图是不是在屏幕外参见偶写的坐标篇http://blog.csdn.net/lckj686/article/details/49687809

自己写Scroller的时候要注意一点,就是scroller 的滚动最后是调用的 view 的scrollTo方法,

mScroller.setFinalX(0);
scrollTo(0, 0);

但是两者不能混用, 比如直接调用了

scrollTo(0, 0);  getScrollX()就是0  但是
mScroller.getCurrX() 却没有同步。这样子会照成混乱,如果用了Scroller 尽量就都直接操作mSroller吧,如果有地方要直接操作scrollTo还是要补上
mScroller.setFinalX 不然会出问题。 这个还不容易发现


你可能感兴趣的:(Android盒子)