最近在捣腾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 不然会出问题。 这个还不容易发现


更多相关文章

  1. Android仿百度加载动画
  2. 应用开发笔记 2011年10月28日 Android(安卓)使用动画效果后的控
  3. Android多线程系列(一) AsyncTask基本使用以及源码解析
  4. 解决android程序中oncreate方法中调用百度地图MKSearchListener
  5. android 借助AccessibilityService实现模拟点击功能-循环一个列
  6. Android6.0 WMS(六) WMS动画管理
  7. Android(安卓)中动画的实现
  8. Property Animation - 概述和工作原理
  9. Android(安卓)自定义 View 实现跑马灯效果

随机推荐

  1. Android(安卓)101 for iOS Developers
  2. Android(安卓)各种机型兼容问题
  3. Android(安卓)获取版本号
  4. Android(安卓)Version
  5. Android: Runtime.exec()的陷阱
  6. Accessing internal data on Android(安
  7. Adding prebuilt shared library to Andr
  8. Android官方资料--Adoptable Storage
  9. Android(安卓)解析Html
  10. android dialog style属性设置