博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android下拉刷新-SwipeRefreshLayout
阅读量:7219 次
发布时间:2019-06-29

本文共 2789 字,大约阅读时间需要 9 分钟。

现在市面上新闻类的App基本上都有下拉刷新,算是一个标配吧,网上关于下拉刷新的博客也有很多,实现方式可以使用开源的PullToRefresh,自定义ListView,或者可以直接使用LineLayOut直接搞定的。不过Google在今年在support v4 19.1版本的library推出了SwipeRefreshLayout,字面上的意思就是下拉刷新,继承自ViewGroup,而如今google推出了更官方的下拉刷新组件,对于开发者而言无疑是一个好事情,比较少的代码实现需要的功能。

基本布局

先来看下简单的布局,在最外层加上SwipeRefreshLayout,但是子的View需要时可滚动的(ScrollView或ListView)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<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"
    
android:paddingLeft=
"@dimen/activity_horizontal_margin"
    
android:paddingRight=
"@dimen/activity_horizontal_margin"
    
android:paddingTop=
"@dimen/activity_vertical_margin"
    
android:paddingBottom=
"@dimen/activity_vertical_margin" 
tools:context=
".MainActivity"
>
 
    
<android.support.v4.widget.SwipeRefreshLayout
        
android:id=
"@+id/swipeRefreshLayout"
        
android:layout_width=
"wrap_content"
        
android:layout_height=
"wrap_content"
        
>
        
<ListView
            
android:id=
"@+id/listView"
            
android:layout_width=
"match_parent"
            
android:layout_height=
"wrap_content"
>
 
         
</ListView>
    
</android.support.v4.widget.SwipeRefreshLayout>
 
 
</RelativeLayout>

 布局效果如下:

Demo实现

MainActivity中onCreate中的初始化一下SwipeLayOut,需要注意的方法是setColorScheme(), 设置进度条的颜色主题,最多能设置四种;

1
2
3
4
5
6
7
8
myListView = (ListView) findViewById(R.id.listView);
      
mySwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeRefreshLayout);
 
      
mySwipeRefreshLayout.setOnRefreshListener(
this
);
      
mySwipeRefreshLayout.setColorScheme(android.R.color.holo_blue_bright, android.R.color.holo_green_light,
              
android.R.color.holo_orange_light, android.R.color.holo_red_light);
      
listAdapter = 
new 
ArrayAdapter(
this
,android.R.layout.simple_list_item_1,listIDE);
      
myListView.setAdapter(listAdapter);

 

MainActivity中需要实现一下 SwipeRefreshLayout.OnRefreshListener 

1
2
3
4
5
@Override
  
public 
void 
onRefresh() {
 
      
refreshHandler.sendEmptyMessageDelayed(REFRESH_STATUS, 
1500
);
  
}

 最后初始化一下数据setRefreshing(boolean):,显示或隐藏刷新进度条

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private 
static 
final 
int 
REFRESH_STATUS =
0
;
  
private 
ListView myListView;
  
private 
SwipeRefreshLayout mySwipeRefreshLayout;
  
private 
ArrayAdapter<String> listAdapter;
  
private 
List<String> listIDE = 
new 
ArrayList<String>(Arrays.asList(
"Visual Studio"
"Android Studio"
"Eclipse"
"Xcode"
));
  
private 
Handler refreshHandler = 
new 
Handler()
  
{
      
public 
void 
handleMessage(android.os.Message msg)
      
{
          
switch 
(msg.what)
          
{
              
case 
REFRESH_STATUS:
                  
listIDE.removeAll(listIDE);
                  
listIDE.addAll(Arrays.asList(
"C#"
"Java"
"C++"
,
"Object-C"
));
                  
listAdapter.notifyDataSetChanged();
                  
mySwipeRefreshLayout.setRefreshing(
false
);
                  
break
;
 
          
}
      
};
  
};

 最后的效果如下:

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4185975.html,如需转载请自行联系原作者

你可能感兴趣的文章
20岁出头的时候,请摆正位置,一无所有却拥有一切
查看>>
eclipse中加入写好的android工程和出现的错误
查看>>
大脑如何休息
查看>>
Spring2.5学习笔记2-AOP-利用通知接口
查看>>
不想转型高升?12条箴言助IT人士提高效率
查看>>
为什么你有10年工作经验,却根本不值钱?(深度好文)
查看>>
shell 脚本攻略--命令之乐
查看>>
字符编码方式
查看>>
在 CentOS上安装配置 Ganglia-3.4.0
查看>>
linux 打包和压缩的概念和区别
查看>>
C++ 模版整理
查看>>
NOIP 2012 提高组第一试模拟赛 魔法树 Solution
查看>>
HTML设置焦点
查看>>
团队进展报告(4)
查看>>
mysql c api 编程(一)
查看>>
【原创】MySQL和PostgreSQL 导入数据对比
查看>>
Linux awk: print中存在变量的情况
查看>>
Exchange2010安装配置篇三 证书服务
查看>>
JavaScript数据结构-栈
查看>>
当信息安全遇上应用交付
查看>>