利用Swiperefreshlayout实现下拉刷新功能的技术探讨
在常见的APP中通常有着下拉页面从而达到刷新页面的功能,这种看似简单的功能有着花样繁多的实现方式。而利用Swiperefreshlayout实现下拉刷新功能则是其中比较简明扼要的一种。
一般来说,在竖直滑动时想要刷新页面可以用Swiperefreshlayout来实现。它通过监听界面的滑动来实现刷新。也可以通过一些方法来设置Swiperefreshlayout是否可以刷新。比如setrefreshing(true),就可以显示刷新动画;反之则取消。
在绘制该界面的layout的时候,需要在这个布局里包裹可以滑动的子控件,比如listview,且只能有一个。
基本代码实现如下:
Layout部分
1 <android.support.v4.widget.SwipeRefreshLayout
2 android:id="@+id/srl"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent">
5
6 <ListView
7 android:id="@+id/lv"
8 android:layout_width="match_parent"
9 android:layout_height="match_parent"/>
10
11 </android.support.v4.widget.SwipeRefreshLayout>
核心功能实现
1 package com.example.xxx;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.os.Handler;
6 import android.support.v4.widget.SwipeRefreshLayout;
7 import android.widget.ArrayAdapter;
8 import android.widget.ListView;
9
10 import java.util.ArrayList;
11
12 public class SwipeActivity extends Activity implements SwipeRefreshLayout.OnRefreshListener {
13
14 private SwipeRefreshLayout mSwipeLayout;
15 private ListView mListView;
16 private ArrayList<String> list = new ArrayList<String>();
17 private ArrayAdapter<String> adapter;
18
19 protected void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_main);
22
23 mListView = (ListView) findViewById(R.id.listview);
24 /**
25 * listview绑定adapter
26 */
27 adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getData());
28 mListView.setAdapter(adapter);
29
30 mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
31 //绑定刷新时间
32 mSwipeLayout.setOnRefreshListener(this);
33 //设置颜色
34 mSwipeLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
35 android.R.color.holo_green_light, android.R.color.holo_orange_light,
36 android.R.color.holo_red_light);
37 }
38
39 private ArrayList<String> getData() {
40 list.add("Hello world!");
41 return list;
42 }
43
44 public void onRefresh() {
45 new Handler().postDelayed(new Runnable() {
46 @Override
47 public void run() {
48 //停止刷新
49 mSwipeLayout.setRefreshing(false);
50
51 }
52 }, 3000);
53 }
54 }
综上所述,利用Swiperefreshlayout实现下拉刷新功能不失为一种比较好的方法,既方便了页面的设计架构,同时也给APP增添了出彩的功能。