簡(jiǎn)述
目前流行android 下拉刷新上拉加載開(kāi)源框架有很多皆怕,XListView,PullToRefresh,android-Ultra-Pull-To-Refresh 等悼院,但是能夠像android-Ultra-Pull-To-Refresh那樣拍棕,將上下拉處理事件分裝到一個(gè)類(lèi)處理,并且提供自定義上下拉顯示效果的開(kāi)源組件不多鲜屏。所以冈爹,小編初試,封裝一個(gè)兼容性不錯(cuò)逛绵,而且可以自定義上下拉效果的組件popularrefreshlayout怀各,
支持gradle引用 compile 'com.awarmisland.android:popularrefreshlayout:1.0.6'
功能簡(jiǎn)述
目前,小編設(shè)置兩種下拉刷新效果术浪,一種是經(jīng)典默認(rèn)下拉刷新效果瓢对,一種是Material風(fēng)格的,如效果圖所示胰苏。經(jīng)過(guò)調(diào)試硕蛹,PopularRefreshLayout支持ScrollView ,ListView,WebView等。
使用方式
- gradle.build中添加引用 compile 'com.awarmisland.android:popularrefreshlayout:1.0.4'****
- 將需要下拉刷新的內(nèi)容外面添加組件
<com.awarmisland.android.popularrefreshlayout.RefreshLayout
android:id="@+id/refresh"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--刷新內(nèi)容-->
<com.awarmisland.android.popularrefreshlayout.RefreshLayout />
3.設(shè)置下拉刷新硕并,上拉加載監(jiān)聽(tīng)(以默認(rèn)下拉刷新效果內(nèi)嵌ListView為例子)
RefreshLayout refresh = (RefreshLayout) findViewById(R.id.refresh);
refresh.setAllowLoadMore(true);//設(shè)置支持上拉加載
refresh.setRefreshListener(refreshListener);
private RefreshListener refreshListener = new RefreshListener() {
@Override
public void onRefresh(final RefreshLayout refreshLayout) {
refreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.finishRefresh();
adapter.clear();
//刷新數(shù)據(jù)
adapter.notifyDataSetChanged();
}
}, 3000);
}
@Override
public void onRefreshLoadMore(final RefreshLayout refreshLayout) {
refreshLayout.postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.finishRefreshLoadMore();
//添加數(shù)據(jù)
}
}, 3000);
}
};
4.自定義下拉上拉效果法焰,通過(guò)自定義類(lèi)繼承BaseHeader 和BaseFooter,提供上下拉手勢(shì)過(guò)程onBegin——>onPull ——>onRelease——>onRefreshing——>onComlete
public abstract void onComlete(RefreshLayout materialRefreshLayout);
public abstract void onBegin(RefreshLayout materialRefreshLayout);
public abstract void onPull(RefreshLayout materialRefreshLayout, float fraction);
public abstract void onRelease(RefreshLayout materialRefreshLayout, float fraction);
public abstract void onRefreshing(RefreshLayout materialRefreshLayout);
5.以Material風(fēng)格下拉刷新效果為例倔毙,添加自定義刷新效果
RefreshLayout refresh = (RefreshLayout) findViewById(R.id.refresh);
MaterialHeaderView headerView = new MaterialHeaderView(this);//初始化自定義刷新頭部
refresh.setHeaderView(headerView);//添加頭部
refresh.setAllowLoadMore(true);