Android官方的SwipeRefreshLayout
来源:互联网 发布:好看的战争电影知乎 编辑:程序博客网 时间:2024/06/05 19:45
这个是基于最新v4包实现的一个下拉刷新的东东~~~
先给大家透露一下,整体很简单,毕竟不是自定义,还请大家放宽心对待!!!废话不多说,直接贴代码
package com.bob.swiperefresh;import android.app.Activity;import android.os.Message;import android.support.v4.widget.*;import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.ListView;import java.util.ArrayList;import java.util.List;import android.os.Handler;/*这是一个下拉刷新的demo 1、先用官方的SwipeRefreshLayout来实现吧___好丑的说 */public class MainActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener { private int index = 0; private static final int REFRESH_FINISH = 1; //设置一个刷新完成的标记量 private SwipeRefreshLayout mSwipe; private ListView listView; private String[] arrays = new String[]{"Hello", "I am a student", "I love android", "love open Resource"}; private ArrayAdapter<String> adapter; private List<String> data = new ArrayList<>();//asList是数组和集合之间的桥梁,不能直接用于初始化List接口变量,否则在加数据的时候会崩掉 private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case REFRESH_FINISH: data.add(getData()); adapter.notifyDataSetChanged();//提示数据适配器数据发生改变从而更新适配器里的数据 mSwipe.setRefreshing(false);//隐藏刷新进度条 break; } } }; public String getData() {//循环获取数组中的信息 String re = arrays[index]; index = (index + 1) % arrays.length; return re; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSwipe = (SwipeRefreshLayout) findViewById(R.id.swipe_ly); listView = (ListView) findViewById(R.id.lv); adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data); listView.setAdapter(adapter); mSwipe.setOnRefreshListener(this); mSwipe.setColorSchemeResources(android.R.color.holo_blue_bright, android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light); //这里设置加载动画的颜色可选项,最多设置4种 } @Override public void onRefresh() {//应该这么使用:网络访问或者其他的费时操作在这里边,最后发送message就ok //说明一下,这个demo里更新ui的东东不一定非要用handler,也可以直接在这里更新ui,只是没有了延迟的效果,但在 //项目里肯定还是需要子线程来实现的 handler.sendEmptyMessageDelayed(REFRESH_FINISH, 4000);//发送一个空消息并添加延迟时间 } /* public void onRefresh(){//或者采用这种方式也行, new Handler().postDelayed(new Runnable() { @Override public void run() { mSwipe.setRefreshing(false); } },4000); }*/}
布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipe_ly" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </android.support.v4.widget.SwipeRefreshLayout></RelativeLayout>
数据是我一条一条刷新出来的,具体实现逻辑可以在源码中看到~~~
据我所知,如果v4版本较低的话效果是“知乎客户端”的那个效果,现在最新的这个目前用在了“coursera”客户端上,有兴趣的盆友可以自行看看
0 0
- Android官方的SwipeRefreshLayout
- Android官方的SwipeRefreshLayout
- Android官方刷新组件 SwipeRefreshLayout 的使用
- Android官方的下拉刷新SwipeRefreshLayout
- android google官方的下拉刷新SwipeRefreshLayout
- [android UI]官方下拉刷新控件SwipeRefreshLayout的使用
- Android v4包中的 SwipeRefreshLayout 官方的下拉刷新组件
- Android SwipeRefreshLayout 官方下拉刷新控件介绍{v4包中带的}
- Android SwipeRefreshLayout 官方下拉刷新控件的使用
- android官方下拉刷新控件SwipeRefreshLayout的使用
- 官方的下拉刷新SwipeRefreshLayout
- Android官方下拉刷新控件 SwipeRefreshLayout
- Android官方出品SwipeRefreshLayout下拉刷新组件
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- Android SwipeRefreshLayout 官方下拉刷新控件介绍
- 关键字检索高亮标出-javasript/jQuery代码实现
- HDU 5117Fluorescent 数学展开DP
- android应用如何在发布市场时关掉所有的Log日志输出
- OpenCV重映射及特征点检测
- jsonp详解—javasript/jQuery跨域请求
- Android官方的SwipeRefreshLayout
- CAS向客户端传递参数乱码问题
- c语言实现统计单词个个数
- mysql,mysqli和PDO的区别
- 后Hadoop时代的大数据架构
- python字符串str和字节数组相互转化
- Android Json解析与总结
- 64位系统在VS2010与Matlab混合编程的下的配置方法
- [leetcode]Remove Nth Node From End of List