本文介绍滚动到底部或顶部响应(如加载更多)的ScrollView的使用。网上关于到达底部加载更多的listView示例很多,对于ScrollView却寥寥无几,下面介绍使用自定义的ScrollView来完成该功能的实例。

示例APK可从这些地址下载:Google Play,  360手机助手,  百度手机助手,  小米应用商店,  豌豆荚

示例代码地址见BorderScrollViewDemo,效果图如下:

1、引入公共库

引入TrineaAndroidCommon@Github(欢迎star和fork^_^)作为你项目的library(如何拉取代码及添加公共库),或是自己抽取其中的BorderScrollView@Github部分使用,BorderScrollView继承自ScrollView,可以自定义滚动到底部或顶部时需要完成的任务。

2、自定义layout
只需将定义的ScrollView标签换成cn.trinea.android.common.view.BorderScrollView标签即可,源码如下(其中的多个TextView只是为了将ScrollView撑满一屏幕):

layout xml源码

3、设置onTop和onBottom事件
通过borderScrollView.setOnBorderListener(OnBorderListener onBorderListener)设置到达底部和顶部的响应。
OnBorderListener有onTop()和void onBottom()两个函数可以实现,分别在滑动到顶部和底部时被调用执行。代码如下:

Java部分实现源码

Java

public class BorderScrollViewDemo extends Activity {private BorderScrollView borderScrollView;private TextView textView1;private TextView textView2;private Context context;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.border_scroll_view_demo);context = getApplicationContext();borderScrollView = (BorderScrollView)findViewById(R.id.scroll_view);borderScrollView.setOnBorderListener(new OnBorderListener() {@Overridepublic void onTop() {// may be done multi times, u should control itToast.makeText(context, "has reached top", Toast.LENGTH_SHORT).show();}@Overridepublic void onBottom() {// may be done multi times, u should control itToast.makeText(context, "has reached bottom", Toast.LENGTH_SHORT).show();}});textView1 = (TextView)findViewById(R.id.text1);textView2 = (TextView)findViewById(R.id.text2);Display display = getWindowManager().getDefaultDisplay();textView1.setHeight(display.getHeight() / 2);textView2.setHeight(display.getHeight() / 2);} }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

public class BorderScrollViewDemo extends Activity {
    private BorderScrollView borderScrollView;
    private TextView         textView1;
    private TextView         textView2;
    private Context          context;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.border_scroll_view_demo);
        context = getApplicationContext();
        borderScrollView = (BorderScrollView)findViewById(R.id.scroll_view);
        borderScrollView.setOnBorderListener(new OnBorderListener() {
            @Override
            public void onTop() {
                // may be done multi times, u should control it
                Toast.makeText(context, "has reached top", Toast.LENGTH_SHORT).show();
            }
            @Override
            public void onBottom() {
                // may be done multi times, u should control it
                Toast.makeText(context, "has reached bottom", Toast.LENGTH_SHORT).show();
            }
        });
        textView1 = (TextView)findViewById(R.id.text1);
        textView2 = (TextView)findViewById(R.id.text2);
        Display display = getWindowManager().getDefaultDisplay();
        textView1.setHeight(display.getHeight() / 2);
        textView2.setHeight(display.getHeight() / 2);
    }
}

注意onTop和onBottom是有可能被多次执行的,需要自己控制,将在后面的实现原理中介绍具体原因~。

滚动到底部或顶部响应的ScrollView使用相关推荐

  1. 滑动到底部或顶部响应的ScrollView实现

    转:http://www.trinea.cn/android/滑动到底部或顶部响应的scrollview/ 两种实现方式的主要不同点在于判断滑动位置的地方,第一种方式在onScrollChanged函 ...

  2. js监听页面或元素scroll事件,滚动到底部或顶部

    基本原理: 1.滚动到底部 元素的滚动距离 + 元素的可视距离 == 元素的滚动条总距离2.滚动到顶部 元素的滚动距离 == 0 监听页面滚动 <!DOCTYPE html> <ht ...

  3. 顶部布局随ScrollView滑动透明度渐变(QQ空间效果)

    QQ控件顶部的工具条在整体的ScrollView从顶部滑动时会从透明逐渐变为solid纯色:虽然有人实现过 ActionBar随ScorllView上下拖动而透明度渐变效果 以及 仿QQ空间滚动Act ...

  4. android 滚动到底部,Android 控制ScrollView滚动到底部(示例代码)

    在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 这里有两种办法,第一种,使用scrollTo(): public static void scrollToBottom ...

  5. Android 控制ScrollView滚动到底部

    在开发中,我们经常需要更新列表,并将列表拉倒最底部,比如发表微博,聊天界面等等, 使用fullScrol() 下面我们看一下这个函数: scrollView.fullScroll(ScrollView ...

  6. ScrollView滚动到底部3种方案(巧解现实产品一个需求)

    在开发过程中,最近产品给了个需求.就不墨迹了,直接上需求图,然后在进行文本的讲解: 本分主要主要讲解第三种方法,并实现上面的需求. 先贴前2种实现ScrollView滚动到底部. 使用scrollTo ...

  7. android scrollview 滚动到底部判断,怎么判断android中ScrollView滑动到了最底部?

    滚动到顶部判断: getScrollY() == 0 滚动到底部判断: View childView = getChildAt(0); childView.getMeasuredHeight() &l ...

  8. android 标题栏颜色渐变和阴影,ScrollView上下滑动监听,及判断scrollView是否滚动到底部

    1.创建  ScrollListener 接口监听滑动距离 public interface ScrollListener {void onScrollChanged(ScrollListenerVi ...

  9. 界面为ScrollView时打开界面会自动滚动到底部之解决方法

    界面为ScrollView时打开界面会自动滚动到底部之解决方法 参考文章: (1)界面为ScrollView时打开界面会自动滚动到底部之解决方法 (2)https://www.cnblogs.com/ ...

最新文章

  1. 错误---获取Input的值为空字符串
  2. (转载)简单linux C++内存池
  3. linux strace 用法
  4. 留存方法论:如何培养用户使用习惯?
  5. 【学习笔记】吴恩达机器学习 WEEK 0
  6. Android 开发中常用小技巧
  7. 电路常识性概念(2)-电容
  8. BGP 13条选路规则
  9. MySQL可以用localhost 连接,但不能用IP连接的问题
  10. python中的列表排序
  11. MapReduce实现词频统计
  12. 数据科学包5- pandas基础之基础运算
  13. 铁乐学python_day29_模块与包学习4
  14. 【洛谷习题】售货员的难题
  15. 基于JSP的鲜花商城源码
  16. 全国所有火车站站点信息
  17. 金山云服务器e1型,金山云-文档中心-重装系统
  18. EBS采购订单创建发票
  19. C++检测平面内两个三角形是否相交(逻辑清晰,手撕精简版)
  20. 微信 及支付宝 支付接口 功能

热门文章

  1. 【错误记录】Mac 中 IntelliJ IDEA 运行 Python 程序报错 ( No module named ‘numpy‘ )
  2. 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 MethodChannel 通信 )
  3. 【数据挖掘】贝叶斯信念网络 ( 马尔科夫假设 | 结构 | 有向无环图 | 参数 | 条件概率表 | 案例分析 )
  4. 【Kotlin】Kotlin 中使用 ButterKnife ( 仅用于适配 Kotlin 语言 | 不推荐新项目使用 )
  5. MongonDB 知识
  6. javascript实现正整数分数约分
  7. jQuery事件之鼠标事件
  8. java Socket Tcp 浏览器和服务器(一)
  9. js中表单验证常用到的正则表达式
  10. FireBug的控制台管理