温馨提示×

Android Scroller如何实现平滑滚动

小樊
102
2024-07-16 03:47:44
栏目: 编程语言

Android中的Scroller类可以实现平滑滚动效果。下面是一个简单的示例代码,演示如何使用Scroller类实现平滑滚动:

public class SmoothScrollActivity extends AppCompatActivity {

    private TextView textView;
    private Button scrollButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_smooth_scroll);

        textView = findViewById(R.id.text_view);
        scrollButton = findViewById(R.id.scroll_button);

        scrollButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                smoothScrollTo(textView, 0, 0, 1000);
            }
        });
    }

    private void smoothScrollTo(View targetView, int x, int y, int duration) {
        Scroller scroller = new Scroller(this);
        scroller.startScroll(targetView.getScrollX(), targetView.getScrollY(), x, y, duration);
        targetView.invalidate();

        handler.post(new Runnable() {
            @Override
            public void run() {
                if (scroller.computeScrollOffset()) {
                    targetView.scrollTo(scroller.getCurrX(), scroller.getCurrY());
                    targetView.postInvalidate();
                    handler.post(this);
                }
            }
        });
    }
}

在上面的代码中,我们首先获取到要滚动的目标View,然后创建一个Scroller对象,并使用startScroll方法来指定滚动的起始位置、终点位置和滚动时间。接着使用Handler来循环计算当前的滚动位置,并通过scrollTo方法实现平滑滚动效果。最后在按钮的点击事件中调用smoothScrollTo方法即可实现平滑滚动。

0