Auto-scrolling of AdapterView (Listview, GridView,…)

扶醉桌前 提交于 2020-01-02 05:00:12

问题


Background

I'm trying to make an AdapterView (listview, gridview,...) to slowly auto scroll .

the user can toggle it whenever he wishes, and it doesn't necessary move all the way to the end of the adapterView.

again, i DO NOT wish to make the adapterView to scroll all the way to the bottom since the user should be able to cancel the auto-scrolling.

What I've tried

for this, i'm using the next code:

private static final SCROLLING_RUNNABLE = new Runnable() {

    @Override
    public void run() {
        final int duration = 10;
        final int pixelsToMove = 1;
        mAdapterView.smoothScrollBy(pixelsToMove, duration);
        mHandler.postDelayed(this, duration);
    }
};

...
// use this to turn auto-scrolling on:
mHandler.post(SCROLLING_RUNNABLE);
// use this to turn auto-scrolling off:
mHandler.removeCallbacks(SCROLLING_RUNNABLE);

The problem

the code usually works, but on some cases, it takes a long time till the scrolling starts.

in fact, it seems that the more i turn it on and off, the more i will have to wait for it to start auto-scrolling.

i think this issue occurs only if i scroll back to the top. it works just fine when the adapterView is in scrolled a bit.

since i can't find out how to get the current scrolling value of the adapterView, i can't find out how to fix this issue.

The question

What can I do in order to fix this issue ? Is there an alternative?


回答1:


You can start scrolling SCROLLING_RUNNABLE.run();

UPDATE Or you can use animations:

Animation animation = new Animation() {
            @Override
            protected void applyTransformation(float interpolatedTime, Transformation t) {
                super.applyTransformation(interpolatedTime, t);
                // scroll the list
            }
        };

and clearAnimation() for stopping.



来源:https://stackoverflow.com/questions/18697619/auto-scrolling-of-adapterview-listview-gridview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!