如何fling一个ListView
来源:互联网 发布:java jdk有安卓版的吗 编辑:程序博客网 时间:2024/05/17 03:09
为什么要fling
与fing(int velocity)对应的有个函数叫scrollBy(int x,int y),它们的区别比较明显,
首先fing的参数是velocity,是滑动开始的初速度;scrollBy的参数则是滑动的距离;
两个函数效果也不一样,fing函数有慢慢减速的效果,而scrollBy是直接平移的;
如果要用手势的初速度滑动那就要fling,
如果要有滑动慢慢减速的顺滑效果那也需要fling;
如何对ListView fling
listview的fling函数天生残缺,只有在sdk api版本在21之后(包括21)才有fling函数,
所以直接使用fling函数要做判断:
if(Build.VERSION.SDK_INT>20){listView.fling(velocity);}
要在老版本做兼容的话就需要使用发射,把控制ListView的mFlingRunnable对象拿出来用,
mFlingRunnable有fling的方法,但mFlingRunnable只有在ListView滑动后才会生成,
否则取出来是null。
所以还需要有个生成mFlingRunnable步骤,可以手动调用smoothScrollBy引起ListView滑动:
smoothScrollBy(2, 10);//smoothScrollBy a little distants to instants mFlingRunnabletry{Field flingRun = AbsListView.class.getDeclaredField("mFlingRunnable");flingRun.setAccessible(true);String methodStr = "startOverfling";Log.e("selfFling", "velocity="+velocity);Method flingMethod = flingRun.getType().getDeclaredMethod(methodStr, int.class);flingMethod.setAccessible(true);flingMethod.invoke(flingRun.get(this), velocity);Log.e("selfFling invoke", "velocity="+velocity);}catch (Exception e) {e.printStackTrace();// TODO: handle exception}
这样我们就能在各个版本使用ListView的fling函数了
这个开源项目里包含了这些方法的使用
https://github.com/smallnew/PullFling
0 0
- 如何fling一个ListView
- android问题及其解决-优化listView卡顿和如何禁用ListView的fling
- ListView优化(二) 禁用ListView的fling
- fling
- fling
- Fling!
- Android 实现ListView 3D效果 - 2 - 弹性滚动,Fling
- Fling One
- Fling(深搜)
- 在listView中如何弹出一个popWindow
- android的listView如何添加一个ViewPager
- ListView如何单独刷新一个item
- Android 如何提前知道fling velocity的距离、时间 根据滑动距离得到velocity
- HDU 3500 Fling
- 4.3.8 Fling
- HDOJ 3500 Fling
- 如何在QML中设计一个expandable ListView
- Andorid一个界面中有多个ListView,如何避免不能下拉?
- mysql中my.ini的参数配置
- 关于typedef的进一步说明
- jquery tmpl遍历
- 一元多项式
- xml-解析列车时刻表的xml字符串
- 如何fling一个ListView
- js打印去除页眉页脚
- ”记录集为只读“怎么解决?请高手帮忙看看。感激不尽……
- Spring之ContextLoaderListener的作用
- (转)oracle 启动监听 报“监听程序不支持服务” 解决
- openwrt 发送邮件
- Html注释与Javascript注释的嵌套
- 指定用户导入、导出
- CAN 示波器分析数据帧