利用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>
View Code

 

核心功能实现

 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 }
View Code

 

综上所述,利用Swiperefreshlayout实现下拉刷新功能不失为一种比较好的方法,既方便了页面的设计架构,同时也给APP增添了出彩的功能。

posted @ 2018-07-29 09:14  软件工程第六组  阅读(265)  评论(0编辑  收藏  举报