当前位置:首页 > 技术知识 > 正文内容

Android监听滚动视图(监听页面滚动)

maynowei9个月前 (08-02)技术知识145

Android UI Libs之
Android-ObservableScrollView

1. 说明


Android-ObservableScrollView,顾名思义,Android上观察滚动的视图,可以监听滚动视图的滚动状态。它可以很简单地与Toolbar进行交互,并且很方便地创建Material Design的app。

2. 配置

在模块的build.gradle中添加依赖:compile '
com.github.ksoichiro:android-observablescrollview:1.5.0'

3. 基本使用


Android-ObservableScrollView提供一些可以观察滚动事件的滚动视图:

  • ObservableGridView:扩展自GridView

  • ObservableListView:扩展自ListView

  • ObservableRecyclerView:扩展自RecyclerView

  • ObservableScrollView:扩展自ScrollView

  • ObservableWebView:扩展自WebView

我以ObservableListView来说明其基本使用方法:

在xml中定义ObservableListView

<com.github.ksoichiro.android.observablescrollview.ObservableListView

android:id="@+id/list_view"

android:layout_width="match_parent"

android:layout_height="match_parent">

</com.github.ksoichiro.android.observablescrollview.ObservableListView>

在java文件中对ObservableListView的相关操作:

this.listview = (ObservableListView) findViewById(R.id.list_view);

ArrayList<String> items = new ArrayList<String>(); for (int i = 1; i <= 100; i++) {

items.add("数据 " + i);

} //为listview设置Adapter

listview.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,items)); //为listview设置滚动回调观察者

listview.setScrollViewCallbacks(this);

所在Activity实现了
ObservableScrollViewCallbacks
接口,并覆盖该接口中的所有方法:

/**

* 滚动时

* @param scrollY

* @param firstScroll

* @param dragging

*/

@Override

public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {

Log.i("onScrollChanged","Y轴的坐标:"+scrollY);

} /**

* 按下时

*/

@Override

public void onDownMotionEvent() {

} /**

* 拖曳结束或者取消时

* @param scrollState

*/

@Override

public void onUpOrCancelMotionEvent(ScrollState scrollState) { if(scrollState==ScrollState.DOWN){

Log.i("onUpOrCancelMotionEvent","向下滚动");

}else if(scrollState==ScrollState.UP){

Log.i("onUpOrCancelMotionEvent","向上滚动");

}else {

Log.i("onUpOrCancelMotionEvent","停止滚动");

}

}

即使调用了
listview.setScrollViewCallbacks(this)
方法,listview还可以调用
listview.setOnScrollListener()
,它们会同时起作用。


Android-ObservableScrollView还给出了很多交互的Activity。

程序源代码下载,我的github仓库:
https://github.com/lavor-zl/UILibs。

欢迎关注我的微信公众号:Android技术漫谈

相关文章

Objective C interface(objective什么意思)

在Objective C里面,interface基本可以理解为其他语言里面的class。当然也有些不同。首先我们可以新建一个Objective-C的file。这里我们添加一个MyClass.m和一个M...

CPU「离奇」飙到 100%!开发者挖出 Linux 内核 16 年老 Bug:这么多年竟无人发现?

【CSDN 编者按】每一次对旧设备的升级都仿佛是一场跨越时代的冒险。本文作者致力于将基于 PXA166 的 Chumby 8 设备从 Linux 2.6.28 版本升级到现代 6.x 版本,然而,在看...

分析 Rust 程序的火焰图(rust火吗)

分析 Rust 程序的火焰图(Flame Graph)是定位性能瓶颈的核心手段,其核心是通过可视化的函数调用栈和时间分布,找到 CPU 耗时、内存分配、锁竞争等热点。以下是详细的分析方法和步骤,结合...

聊聊并发编程: Lock(并发锁有哪些)

之前学习了如何使用synchronized关键字来实现同步访问,Java SE 5之后,并发包中新增了Lock接口(以及相关实现类)用来实现锁功能,它提供了与synchronized关键字类似的同步功...

Navicat Premium 连接 Oracle 数据库

Navicat Premium是一个可多重连接的数据库管理工具,它可让你以单一程序同時连接到 MySQL、SQLite、Oracle 及 PostgreSQL 数据库,让管理不同类型的数据库更加方便。...

python-oracledb——利用python连接Oracle数据库的好用方法

这篇文章最早发布在CSDN了,最近想尝试使用一下头条,重新转移过来了。背景介绍之前使用的数据库一直是MySql,偶尔使用PostgreSQL,都是利用的数据库连接池使用;最近需要在Oracle数据库取...