谷歌官方推荐的下拉刷新设计——Android SwipeRefreshLayout

wipeRefreshLayout

SwipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。,见下图:


主要方法

  • setOnRefreshListener(OnRefreshListener): 为布局添加一个Listener

  • setRefreshing(boolean): 显示或隐藏刷新进度条

  • isRefreshing(): 检查是否处于刷新状态

  • setColorScheme(): 设置进度条的颜色主题,最多能设置四种

xml布局文件

布局文件很简单,只需要在最外层加上SwipeRefreshLayout,然后他的child是可滚动的view即可,如ScrollView或者ListView。如:

<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" >


    <ListView
        android:id="@+id/listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="16dp" />


</android.support.v4.widget.SwipeRefreshLayout>

Activity代码

public class MySwipeView extends Activity implements SwipeRefreshLayout.OnRefreshListener{




 private SwipeRefreshLayout mSwipeLayout;
 private ListView mListView;
 private ArrayList<String> list = new ArrayList<String>();
 private ArrayAdapter<String> myAdapter;
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.swipe_view);


 mListView = (ListView) findViewById(R.id.listview);
 myAdapter=new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
 getData());
 mListView.setAdapter(myAdapter);


 mSwipeLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_container);
 mSwipeLayout.setOnRefreshListener(this);
 mSwipeLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
 android.R.color.holo_green_light, android.R.color.holo_orange_light,
 android.R.color.holo_red_light);
 }


 private ArrayList<String> getData() {
 list.add("qq");
 list.add("ss");
 list.add("rr");
 return list;
 }


 /**
  * 刷新功能代码
  */
 public void onRefresh() {
 new Handler().postDelayed(new Runnable() {
 @Override
 public void run() {
 mSwipeLayout.setRefreshing(false);
 Toast.makeText(getApplicationContext(), "aiyou!", Toast.LENGTH_SHORT).show();
 list.add("DADADAN");
 myAdapter.notifyDataSetChanged();
 }
 }, 5000);
 }
}

上面的代码很简单,只需要给SwipeRefreshLayout添加一个listener,值得说明的是setColorScheme方法是设置刷新进度条的颜色,最多只能设置4种循环显示,默认第一个是随用户手势加载的颜色进度条。

google在不断完善自己的sdk,推出越来越多的组件,其目的是让开发更简单,设计上更统一,这可能是google未来的方向,不管怎样,这对开发者来说无疑是非常好的消息。

你可能感兴趣的:(android,ListView)