recyclerView的側拉效果。上拉載入。下拉重新整理,點選事件等等
PtrSwipeMenuRecyclerView是一個可以側滑刪除。點選的。具備下拉重新整理。和
上拉載入的功能;
recyclerView .setItemAnimator(new DefaultItemAnimator());可以設定
itemAnimator的變化;
recyclerView.setLayoutManager(new LinearLayoutManager(this,
LinearLayoutManager.VERTICAL, false));
設定方向變化;
recyclerView.addItemDecoration(new DividerItemDecoration(this,
LinearLayoutManager.VERTICAL));
設定分割線;
recyclerView.smoothScrollToPosition(3);可以滾動到可以的位置;
2接下來一步一步解析佈局
HeaderView實現RelativeLayout
init裡面設定狀態,可以改變view的可見不可見。並且是一個抽象方法去。
讓子類view的實現,他的佈局,上拉重新整理,下拉載入。各種狀態去實現,應該
可以去新增一些佈局動畫效果
3看看介面卡;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup
parent, int viewType) {
if(viewType==HeaderType){
HeaderFooterViewHolder headerFooterViewHolder=new
HeaderFooterViewHolder(headerView);
return headerFooterViewHolder;
}else if(viewType == FooterType) {
HeaderFooterViewHolder headerFooterViewHolde=new
HeaderFooterViewHolder(footerView);
return headerFooterViewHolde;
}else {
View contentView= LayoutInflater.from(parent.getContext
()).inflate(R.layout.content_view_for_test,parent,false);
LinearLayout menuView = (LinearLayout)
LayoutInflater.from(parent.getContext()).inflate
(R.layout.menu_for_test, parent, false);
SwipeMenuLayout swipeMenuLayout = new SwipeMenuLayout
(parent.getContext(),contentView,menuView);
return new ViewHolder(swipeMenuLayout);
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int
position) {
}
4接下來是recyclerView的變化;
1第一介面: public interface OnPullListener {
void onRefresh();
void onLoadMore();
}
觸發監聽條件:
@Override
public void onScrolled(int dx, int dy) {
if(!canScrollVertically(1))
載入更多;
}
onInterceptTouchEvent:
攔截垂直滑動的狀況。攔截下來進行處理。攔截下來後。進行上拉重新整理,和下
拉刪除的操作;並且可以透過 int
touchingPosition=getChildAdapterPosition(findChildViewUnder
(startX,startY));獲取到當前的情況,
DragSwipeAdapter.ViewHolder viewHolder =
(DragSwipeAdapter.ViewHolder) findViewHolderForAdapterPosition
(touchingPosition);
獲取到holder。然後根據postion獲取相應的佈局
item的佈局:這個佈局主要控制左滑,和右滑動的情況,並且用到sroller來使
滑動更加平滑;
另外,是透過
private ValueAnimator.AnimatorUpdateListener
scrollBackAnimatUpdateListener = new
ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
float value = (float) valueAnimator.getAnimatedValue();
adapter.getHeaderView().setViewHeight(currHeaderHeight *
value);
if(value==0){
refreshing = false;
}
}
};
根據時間控制動畫;
在MainActivity中,控制非同步請求;
private class GetDataTask extends AsyncTask
@Override
protected void onPostExecute(String[] strings) {
recyclerView.onRefreshComplete();
super.onPostExecute(strings);
}
@Override
protected String[] doInBackground(Void... voids) {
try {
Thread.sleep(1400);
} catch (InterruptedException e) {
e.printStackTrace();
}
return null;
}
};
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2041/viewspace-2813989/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- RecyclerView下拉重新整理 上拉載入 原理DemoView
- 上拉重新整理,下拉載入
- Flutter——下拉重新整理,上拉載入Flutter
- flutter - listView 下拉重新整理 上拉載入FlutterView
- 上拉載入下拉重新整理瞭解下
- 給RecyclerView擴充套件下拉重新整理上拉載入View套件
- Flutter 實現下拉重新整理&上拉載入Flutter
- Flutter listview下拉重新整理 上拉載入更多FlutterView
- UITableView:下拉重新整理和上拉載入更多UIView
- 如何實現上拉載入,下拉重新整理?
- Flutter下拉重新整理,上拉載入更多資料Flutter
- ListView下拉重新整理,上拉自動載入更多View
- uni-app | 上拉載入和下拉重新整理探索APP
- Flutter ListView封裝,下拉重新整理、上拉載入更多FlutterView封裝
- Flutter 下拉重新整理上拉載入更多Flutter
- H5下拉重新整理和上拉載入實現原理淺析H5
- 搭建自己的直播平臺,RecycleView下拉重新整理,上拉載入View
- 下拉重新整理,上拉載入外掛mescroll原始碼分析原始碼
- vue 實現上拉載入下拉重新整理(思路賊清晰)Vue
- 自己動手寫RecyclerView的上拉載入View
- 移動端用下拉重新整理的方式實現上拉載入
- 【微信小程式】scroll-view 的上拉載入和下拉重新整理微信小程式View
- 淺談微信小程式中的下拉重新整理和上拉載入微信小程式
- 分享輪子-flutter下拉重新整理上拉載入Flutter
- Flutter入門進階之旅(十五)ListView下拉重新整理&上拉載入更多FlutterView
- 為RecyclerView新增分頁載入(上拉載入更多)功能View
- HarmonyOS 下拉重新整理 上拉載入更多 第二種實現方式
- Swift iOS : 上拉重新整理或者下拉重新整理SwiftiOS
- 微信開發之下拉重新整理上拉載入更多
- php原生上拉載入,點選載入更多(jQuery,ajax,mysql)PHPjQueryMySql
- vue-better-scroll 一個vue的上拉載入下拉重新整理外掛Vue
- flutter - RefreshIndicator實現下拉重新整理、上拉載入 | 掘金技術徵文FlutterIndicator
- Movable-view實現列表的下拉重新整理上拉載入View
- 移動端上拉載入和下拉重新整理的vue外掛Vue
- React Native——自定義下拉重新整理上拉載入的列表React Native
- pulltorefreshRecylerView下拉重新整理上拉載入,支援自能預載入,可定製的底部View
- Flutter之封裝一個下拉重新整理上拉載入的listviewFlutter封裝View
- 仿QQ側拉選單