一,概述
SwipeRefreshLayout意思为下拉刷新的布局,其继承ViewGroup,Google在android5.0中提供的下拉刷新控件,且提供了v4支持包。
这是一个容器布局,将listView或SCrollView放入这个容器布局中即可实现下拉刷新的效果。有效的将下拉刷新控件与展示内容的控件实现了分离。这种实现思想非常值得学习。
下面以与ListView连用说明SwipeRefreshLayout的使用步骤。
二,使用步骤
SwipeRefreshLayout的使用非常简单,下面直接上代码。
布局文件
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl_listview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_below="@+id/fl_ces_data">
<ListView
android:id="@+id/rlv_ces_data"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@color/transparent"
android:scrollbars="none"
android:dividerHeight="3dp"
/>
</android.support.v4.widget.SwipeRefreshLayout>
mSwipeRefreshLayout= (SwipeRefreshLayout) findViewById(R.id.srl_listview);//找到刷新对象
mRefreshListView= (RefreshListView) findViewById(R.id.rlv_ces_data);//找到刷新对象
设置监听事件
mCesUseDataAdapter = new CesUseDataAdapter(getActivity(),mList);
mRefreshListView.setAdapter(mCesUseDataAdapter);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
Log.i(TAG,"刷新"+"");
new Handler().postDelayed(new Runnable() {//模拟耗时操作
@Override
public void run() {
swipe_refresh_layout.setRefreshing(false);//取消刷新
}},2000);}});
SwipeRefreshLayout还有以下常用方法:
mSwipeRefreshLayout.setRefreshing(false);//取消刷新,因此刷新图标
mSwipeRefreshLayout.setRefreshing(true);//设置为刷新状态,显示刷新图标
mSwipeRefreshLayout.setEnabled(false);//设置为不能刷新
boolean refreshing = mSwipeRefreshLayout.isRefreshing();//是否正在刷新
样式的设置:
//设置刷新时旋转图标的颜色,这是一个可变参数,当设置多个颜色时,旋转一周改变一次颜色。
mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,R.color.colorPrimary);