Android更漂亮的AutoLoadListView吧!

转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992

关于上拉刷新和下拉加载,已经有不少的解决方案了,XListView和PullToRefresh应该是被广为熟知的开源项目,项目很棒,可以解决我们的需求。但是,今天咱们用一种更简单的方式,来实现上拉刷新和下拉加载功能,我叫它AutoLoadListView~

先来一张效果图。

刷新效果使用19版本之后的v4兼容包的SwipeRefreshLayout实现,效果很漂亮,而自动加载下一页的跳动效果,则是使用了另外一个开源项目JumpingBeans,这跳动的省略号,是不是很赞呢?

下面简单介绍下使用方法

  • 布局文件
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><RelativeLayout xmlns:android=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://schemas.android.com/apk/res/android"</span>
    xmlns:tools=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"http://schemas.android.com/tools"</span>
    android:layout_width=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span>
    android:layout_height=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span> >

    <android<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.support</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.v</span>4<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.widget</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SwipeRefreshLayout</span>
        android:id=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"@+id/swipe_refresh"</span>
        android:layout_width=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span>
        android:layout_height=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span> >

        <<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.socks</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.autoload</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.AutoLoadListView</span>
            android:id=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"@+id/listview"</span>
            android:layout_width=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span>
            android:layout_height=<span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">"match_parent"</span> >
        </<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">com</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.socks</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.autoload</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.AutoLoadListView</span>>

    </android<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.support</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.v</span>4<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.widget</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.SwipeRefreshLayout</span>>

</RelativeLayout></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li></ul>
  • 刷新。我们实现刷新需要实现SwipeRefreshLayout.OnRefreshListener接口,然后在onRefresh()实现刷新逻辑即可
<code class="hljs cs has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onRefresh</span>()</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>
  • 加载下一页。我们需要添加一个接口,然后在回调中实现我们的加载任务即可
<code class="hljs java has-numbering" style="display: block; padding: 0px; background-color: transparent; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-top-left-radius: 0px; border-top-right-radius: 0px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; word-wrap: normal; background-position: initial initial; background-repeat: initial initial;">listView.setOnLoadNextListener(<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">new</span> OnLoadNextListener() {

            <span class="hljs-annotation" style="color: rgb(155, 133, 157); box-sizing: border-box;">@Override</span>
            <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">public</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">void</span> <span class="hljs-title" style="box-sizing: border-box;">onLoadNext</span>() {
                handler.sendEmptyMessageDelayed(MSG_LOAD_MORE, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3000</span>);
            }
        });</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right;"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li></ul>

是不是用起来很简单捏?



有的同学可能问了,我要是想要侧滑删除咋办? 
囧… 
又不是只有这一种交互效果!为啥抓着这种效果不放啊!用前面介绍的【凯子哥带你夯实应用层】使用ActionMode实现有删除动画的多选删除功能不行嘛!!! 
好吧,既然你们产品经理沉迷于这种效果,咱们就做做吧…

看下效果图,也还ok啊~但是因为是demo,所以很多业务没处理,这个就需要大家根据自己的需求去改源码了,开源项目的好处不就在此么~

AutoLoadListView的github项目地址

时间: 2025-01-19 08:20:18

Android更漂亮的AutoLoadListView吧!的相关文章

Dreamweaver 4 简明教程(五、让你的网页更漂亮之一)

dreamweaver|教程|网页 五.让你的网页更漂亮 用图片美化你的页面 上面的网页实在也太单调了,当然无法让大家满意,现在我们来一步一步美化我们的页面.而最简单直接的方法是在网页上添加图片.而很大程度上,人们说一个网页漂亮,通常就是指网页上的图片漂亮. 点击对象面板上的 按钮,然后弹出对话框,选择需要插入的的图片,如下图: 如果被选择的文件,是网站目录以外的文件,系统就会问你时候将图片复制到网站内,如下图.答案当然是"是",否则网页传上服务器后,图片就不会被显示,因为图片根本就不

ps去斑美白实例:让人物的皮肤更美白更漂亮

夏天来了,这是我们外出拍照的好时节,在拍照时都会遇到一些问题,有些照片可能是光线不够,脸部会有大量的杂色,有些是人物脸上有些斑点或者是痘痘,这些处理起来有些麻烦.如何去掉脸上的斑点,让人物的皮肤更美白.更漂亮.其实方法也有很多,你也可以尝试一下!本期小编用精彩实例图片,逐步介绍ps去斑美白的好方法. 一.准备工作第一步 1.新建图层做调整 对待任何一张图片,我们在加工之前都要保持良好的习惯,复制一张原图再修饰,以免在修饰过程里由于失误造成无法挽回的局面. 2.选取工具,放大图像 选取修补工具,并

让你的软件界面更漂亮(2)

一.统一风格漂亮界面设计的理论与实现 a.窗口和对话框 Windows操作系中窗口和对话框在我们看来是一样的,就是一个四边形,有标题栏.系统按钮,边框等,可移动和可变大小.实际上窗口和对话框是有的区别的.在创建对话框窗口时的工作中要发生两个主要过程:对话框的过程和其窗口过程.Win32 SDK对话框使用了系统提供的对话框窗口的窗口过程和对话框过程,对话框过程将被窗口过程调用.在MFC下,所有的窗口类都使用了同一个窗口过程,对话框类也一样.MFC对话框过程只处理WM_INITDIALOG消息,其余

Android制作漂亮自适布局键盘的方法_Android

最近做了个自定义键盘,但面对不同分辨率的机型其中数字键盘不能根据界面大小自已铺满,但又不能每种机型都做一套吧,所以要做成自适应,那这里主讲思路. 这里最上面的titlebar高度固定,下面输入的金额高度也固定(当然也可以自适应),主要是中间的数字键盘,高度和宽度需要自适应.先来张效果图: 最常见的解决方案是用线性布局,自适应当然是按比例,但布局中无%的概念,那就要用到layout_weight了,该属性的作用是决定控件在其父布局中的显示权重(具体概念就不多说了). 这里用一个LinearLayo

xhprof gui,让xhprof界面更漂亮,功能更强大

顾名思义,xhprof gui 就是一个xhprof的一个ui展现.作者hack了facebook发布的xhprof展现代码.使xhprof界面更漂亮,功能更强大. xhprof gui新增了如下特性: * 友好的界面 * 数据库存储(mysql) * 支持按请求百分比执行xhprof优化.降低服务器负载. * 支持相似url的概念.如:http://news.example.com/?story=23 http://news.example.com/?story=25 被视为相似url. 完整

Android太臃肿 火狐OS比Android更适合低端手机

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   据国外媒体报道,Mozilla联合创始人.首席技术官布兰登·艾奇(Brendan Eich)表示,对于在廉价手机硬件上运行而言,Android身材过于臃肿了.      艾奇对Mozilla进军竞争 激烈的手机市场并不 感到担忧,Mozilla不会与苹果.Google.微软的高端智能手机竞争.Mozilla计划利用火狐OS进军入门级智能手机和功能手机市场.他 认

Mozilla:火狐OS比Android更适合低端智能手机

http://www.aliyun.com/zixun/aggregation/17197.html">北京时间7月4日消息,据国外媒体报道,Mozilla联合创始人.首席技术官布兰登·艾奇(BrendanEich)表示,对于在廉价手机硬件上运行而言,Android身材过于臃肿了. 艾奇对Mozilla进军竞争 激烈的手机市场并不 感到担忧,Mozilla不会与苹果.Google.微软的高端智能手机竞争.Mozilla计划利用火狐OS进军入门级智能手机和功能手机市场.他 认为,火狐OS比A

比Android更开放?火狐OS搅局手机系统市场

在很 多人都以为手机操作系统竞争大门已经关闭的时候,Mozilla.乌班图和三星杀了进来.     而这些小众操作系统能否改变当前被谷歌和苹果把持的操作系统格局,谁也不知道.但不可否认的是,由于这些小众操作系统的入局,打开了业界本以为已经关闭的操作系统竞争大门,也让运营商.智能手机厂商和消费者有了更多的选择.     在2013年亚洲移动通信博览会上,Mozilla再次展出了该公司推出的火狐智能手机操作系统. 不过,与一年前Mozilla只能展示界面不同,今年的Mozilla已经拥有了六家终端厂

APP虎:Android更适合中国

移动互联网市场已然是一个不容忽视的创业新领域,在这个充满机遇和创新的市场里,正有越来越多的开发者们夜以继日的投身其中.在这里面,iPhone与Android两大平台的开发者们尤为瞩目,在这两大巨头一个向左走向封闭,一个向右走向开放的市场主导中,我们的开发者们往何处去?TechWeb密集采访国内主要的开发者们,推出<风暴前夜:APP开发者们>系列报道.图为APP虎CEO陈立 [TechWeb报道]"与iPhone和Symbian相比,Android更适合中国."当Androi