Android 功能强大的Scrollview

本文介绍如何在Android中自定义ScrollView以实现滚动监听功能。通过创建ScrollViewPlus类,并定义ScrollViewListener接口,可以有效捕捉滚动变化,适用于需要根据滚动位置执行特定操作的应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android中自带的ScrollView没有实现滚动的监听,而在开发中,我们经常要借助这个监听来实现一系列的操作。因此,我们需要自定义一个Scrollview来实现这个功能。
先上代码:

package com.lvtao.comewell.widget;
/***
 * 功能强大的Scrollview
 */
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;

public class ScrollViewPlus extends ScrollView{

    private ScrollViewListener scrollViewListener = null;  

    public ScrollViewPlus(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public ScrollViewPlus(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ScrollViewPlus(Context context) {
        super(context);
    }


    public void setScrollViewListener(ScrollViewListener scrollViewListener) {  
        this.scrollViewListener = scrollViewListener;  
    }  

    @Override  
    protected void onScrollChanged(int x, int y, int oldx, int oldy) {  
        super.onScrollChanged(x, y, oldx, oldy);  
        if (scrollViewListener != null) {  
            scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);  
        }  
    }  

    public interface ScrollViewListener {  
        void onScrollChanged(ScrollViewPlus scrollView, int x, int y, int oldx, int oldy);  
    }  
}

在这个自定义的Scrollview中,我们通过定义了一个ScrollViewListener接口来对ScrollView进行监听。在此接口中,通过重写onScrollChanged这个抽象方法来获取滑动的距离及状态并进行一系列的操作。

例如:

private ScrollViewPlus sv;

···

sv.setScrollViewListener(new ScrollViewListener() {

            @SuppressLint("NewApi")
            @Override
            public void onScrollChanged(ScrollViewPlus scrollView, int x,int y, int oldx, int oldy) {
                //y-->总滑动的距离
                //oldy-->上一次滑动的距离<===>可以根据y与oldy的差值判断向上滑动还是向下滑动
                sv.scrollTo(x, y);

            }
        });
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值