SwipeRefreshLayout简介:
google官方推出的下拉刷新组件SwipeRefreshLayout,被放到support v4中。
其实通过文档我们可以知道SwipeRefreshLayout只不过是继承了ViewGroup。
查看文档,我们可以知道,在SwipRefreshLayout中存在一个接口,通过此接口我们可以监听滑动手势,其实使用此组件最重要的步骤就是实现此接口的onRefresh方法,在此方法中实现数据的更新操作。
查看源码:
android studio 查看源码,选择类,按住ctrl
public class SwipeRefreshLayout extends ViewGroup implements NestedScrollingParent,
NestedScrollingChild {
```
```
}
SwipeRefreshLayout里面需要注意的API:
1、setOnRefreshListener(OnRefreshListener listener)
设置下拉监听,当用户下拉的时候会去执行回调 2、setColorSchemeColors(int… colors)
(过期的方法)设置 进度条的颜色变化,最多可以设置4种颜色 2、setColorSchemeResources(int…
colorResIds):设置进度动画的颜色。 3、setProgressViewOffset(boolean scale, int
start, int end) 调整进度条距离屏幕顶部的距离 4、setRefreshing(boolean refreshing)
设置SwipeRefreshLayout当前是否处于刷新状态,一般是在请求数据的时候设置为true,在数据被加载到View中后,设置为false。
5、setSize(int size):设置进度圈的大小,只有两个值:DEFAULT、LARGE
6、setProgressBackgroundColor(int colorRes):设置进度圈的背景色。
使用步骤:
布局调用:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="10dp"
android:text="刷新"
android:textSize="20sp"
android:textStyle="bold" />
</ScrollView>
</android.support.v4.widget.SwipeRefreshLayout>
Activity调用:
public class MainActivity extends AppCompatActivity {
private TextView tv;
private SwipeRefreshLayout swipeRefreshLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView)findViewById(R.id.textView1);
swipeRefreshLayout = (SwipeRefreshLayout)findViewById(R.id.swipe_container);
//设置刷新时动画的颜色,可以设置4个
swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_light, android.R.color.holo_red_light, android.R.color.holo_orange_light, android.R.color.holo_green_light);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
tv.setText("正在刷新");
// TODO Auto-generated method stub
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
tv.setText("刷新完成");
swipeRefreshLayout.setRefreshing(false);
}
}, 6000);
}
});
}
}
测试:
看效果出来了,就是这样简单。