检测GridView滚动速度 – Android

我有一个从GridView子类的自定义视图,我使用它来显示一些自定义的3D动画/效果.我这样做的方式是重写dispatchDraw().

理想情况下,我想知道在画画时滚动的当前速度.目前,我使用GestureDetector.OnGestureListener并捕获onScroll事件,这非常有效,除了它也不会将flings检测为滚动事件.

想到的一个想法是捕获onFling事件,然后自行进行处理,以便以后检测速度.

有没有更好的方法来实现这一点?任何简单的查询GridView滚动速度的方法

谢谢.

解决方法

嗯,我希望你现在得到你的答案,但我仍然会发布一个,以备将来使用…

您将需要覆盖OnScrollListener并计算自己的速度.
运动学:距离/时间=速度

private class SpeedDetectorOnScrollListener implements OnScrollListener {

    private long timeStamp;
    private int prevFirstVisibleItem;
    private int scrollingSpeed;

    public SpeedDetectorOnScrollListener () {
        timeStamp = System.currentTimeMillis();
        lastFirstVisibleItem = 0;
    }

    @Override
    public void onScroll(AbsListView view,int firstVisibleItem,int visibleItemCount,int totalItemCount) {
        long lastTime = System.currentTimeMillis();
        timeStamp = lastTime;
        lastFirstVisibleItem = firstVisibleItem;
        scrollingSpeed =  (firstVisibleItem - lastFirstVisibleItem)/(lastTime-timeStamp)

    }

     public int getSpeed()
     {
       return scrollingSpeed;
     }
 }

相关文章

以下为个人理解,如错请评 CE: 凭据加密 (CE) 存储空间, 实际路径/data/user_ce/ DE: 设备加密 (DE) 存...
转载来源:https://blog.csdn.net/yfbdxz/article/details/114702144 用EventLog.writeEvent打的日志(或...
事件分发机制详解 一、基础知识介绍 1、经常用的事件有:MotionEvent.ACTION_DOWN,MotionEvent.ACTION...
又是好久没有写博客了,一直都比较忙,最近终于有时间沉淀和整理一下最近学到和解决的一些问题。 最近进...
Android性能优化——之控件的优化 前面讲了图像的优化,接下来分享一下控件的性能优化,这里主要是面向...
android的开源库是用来在android上显示gif图片的。我在网上查了一下,大家说这个框架写的不错,加载大的...