2 a1388463837 a1388463837 于 2013.03.30 18:39 提问

求教怎么在滚动scrollview的时候实时获取他滚动的距离

我打算做一件很蛋疼的事,那就是scrollview嵌套scrollview(其实不是真的scrollview,而是一个用scrollview做的瀑布流控件),外层scrollview的作用是把页面的头部给滚出屏幕,然后把内容卡在顶部(如果知道美丽说的话,请参考美丽说“我”这个模块的页面效果(要登录才有)一模一样的需求),但是因为事件冲突,我打算重写scrollview,监听scrollview的滚动距离来,只要高过头部就把外层的scrollview的触摸监听给干掉。不过现在遇到个问题,就是不知道scrollview怎么实时监控他的滚动距离,用getscroll方法试过,用computeVerticalScrollOffset方法试过,不过都只有在手指离开之后才能获得距离,但不到划过去就卡住的效果,不知道有没有什么方法能够实时获得scrollview的滚动位置的呢?求指点。
ps:如果有大神知道怎么做到美丽说那种效果的更好,求指导

2个回答

u010982006
u010982006   2014.09.02 16:17

scrollView.setOnTouchListener(this);
}

@SuppressLint("NewApi")
@Override
public boolean onTouch(View v, MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_MOVE) {
        // 可以监听到ScrollView的滚动事件
        System.out.println(scrollView.getScrollY());
    }
    return false;
}
qq_31190687
qq_31190687   2016.02.17 11:01

/**
* 在Handler中进行图片可见性检查的判断,以及加载更多图片的操作。
*/
private static Handler handler = new Handler() {

    public void handleMessage(android.os.Message msg) {
        MyScrollView myScrollView = (MyScrollView) msg.obj;
        int scrollY = myScrollView.getScrollY();
        // 如果当前的滚动位置和上次相同,表示已停止滚动
        if (scrollY == lastScrollY) {
            // 当滚动的最底部,并且当前没有正在下载的任务时,开始加载下一页的图片
            if (scrollViewHeight + scrollY >= scrollLayout.getHeight()
                    && taskCollection.isEmpty()) {
                myScrollView.loadMoreImages();
            }
            myScrollView.checkVisibility();
        } else {
            lastScrollY = scrollY;
            Message message = new Message();
            message.obj = myScrollView;
            // 5毫秒后再次对滚动位置进行判断
            handler.sendMessageDelayed(message, 5);
        }
    };
Csdn user default icon
上传中...
上传图片
插入图片