Android下拉刷新-SwipeRefreshLayout
現(xiàn)在市面上新聞?lì)惖腁pp基本上都有下拉刷新,算是一個(gè)標(biāo)配吧,網(wǎng)上關(guān)于下拉刷新的博客也有很多,實(shí)現(xiàn)方式可以使用開(kāi)源的PullToRefresh,自定義ListView,或者可以直接使用LineLayOut直接搞定的。不過(guò)Google在今年在support v4 19.1版本的library推出了SwipeRefreshLayout,字面上的意思就是下拉刷新,繼承自ViewGroup,而如今google推出了更官方的下拉刷新組件,對(duì)于開(kāi)發(fā)者而言無(wú)疑是一個(gè)好事情,比較少的代碼實(shí)現(xiàn)需要的功能。
基本布局
先來(lái)看下簡(jiǎn)單的布局,在最外層加上SwipeRefreshLayout,但是子的View需要時(shí)可滾動(dòng)的(ScrollView或ListView)
<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.SwipeRefreshLayoutandroid:id="@+id/swipeRefreshLayout"android:layout_width="wrap_content"android:layout_height="wrap_content"><ListViewandroid:id="@+id/listView"android:layout_width="match_parent"android:layout_height="wrap_content"></ListView></android.support.v4.widget.SwipeRefreshLayout></RelativeLayout>?布局效果如下:
Demo實(shí)現(xiàn)
MainActivity中onCreate中的初始化一下SwipeLayOut,需要注意的方法是setColorScheme(), 設(shè)置進(jìn)度條的顏色主題,最多能設(shè)置四種;
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中需要實(shí)現(xiàn)一下?SwipeRefreshLayout.OnRefreshListener?
@Overridepublic void onRefresh() {refreshHandler.sendEmptyMessageDelayed(REFRESH_STATUS, 1500);}最后初始化一下數(shù)據(jù)setRefreshing(boolean):,顯示或隱藏刷新進(jìn)度條
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;}};};最后的效果如下:
?參考資料:https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html
總結(jié)
以上是生活随笔為你收集整理的Android下拉刷新-SwipeRefreshLayout的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: MySql 存储过程实例(附完整注释)
- 下一篇: BZOJ2459 : [BeiJing2