国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

android RecyclerView側(cè)滑菜單,滑動(dòng)刪除,長(zhǎng)按拖拽,下拉刷新上拉加載

2019-10-23 19:44:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文介紹的庫(kù)中的側(cè)滑效果借鑒自SwipeMenu,并對(duì)SipwMenu的源碼做了修改與Bug修復(fù),然后才開發(fā)出的SwipeRecyclerView。

  • 需要說(shuō)明的是,本庫(kù)沒(méi)有對(duì)RecyclerView做大的修改,只是ItemView的封裝。看起來(lái)是對(duì)RecyclerView的修改,其實(shí)僅僅是為RecyclerView添加了使用的方法API而已。
  • 本庫(kù)已經(jīng)更新了三個(gè)版本了,會(huì)一直維護(hù)下去,根據(jù)小伙伴的要求,以后也會(huì)添加一些其它功能。

SwipeRecyclerView將完美解決這些問(wèn)題:

  • 以下功能全部支持:豎向ListView、橫向ListView、Grid、StaggeredGrid四種形式。
  • RecyclerView 左右兩側(cè) 側(cè)滑菜單。
  • 菜單橫向排布、菜單豎向排布。
  • RecyclerView長(zhǎng)按拖拽Item。
  • RecyclerView側(cè)滑刪除item。
  • 指定RecyclerView的某一個(gè)Item不能滑動(dòng)刪除或長(zhǎng)按拖拽。
  • 某一個(gè)Item顯示的不同的菜單(類似QQ)。
  • 用SwipeMenuLayout在任何地方都可以實(shí)現(xiàn)你自己的側(cè)滑菜單。
  • 使用SwipeRecyclerView下拉刷新、自動(dòng)加載更多。
  • 可以和ViewPager嵌套使用(兼容滑動(dòng)沖突)。

引用方法

AndroidStudio使用Gradle構(gòu)建添加依賴(推薦)

compile 'com.yanzhenjie:recyclerview-swipe:1.0.2'

Or Maven:

<dependency> <groupId>com.yanzhenjie</groupId> <artifactId>recyclerview-swipe</artifactId> <version>1.0.2</version> <type>pom</type></dependency>

我在開發(fā)SwipeRecyclerView時(shí)引用的RecyclerView版本如下:

compile 'com.android.support:recyclerview-v7:23.4.0'

效果圖

gif有一些失真,且網(wǎng)頁(yè)加載速度慢,可以[下載demo的apk][3]看效果。

側(cè)滑菜單

  • 左右兩側(cè)都有菜單,主動(dòng)調(diào)出第幾個(gè)菜單或者手指滑動(dòng)出現(xiàn)。
  • 根據(jù)ViewType某一個(gè)Item顯示的不同的菜單(類似QQ)

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

和ViewPager嵌套 下拉刷新、自動(dòng)加載更多

  • 和ViewPager嵌套使用,兼容了滑動(dòng)沖突。
  • 可以和任何下拉刷新的框架結(jié)合,滑動(dòng)到底部自動(dòng)加載更多。

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

長(zhǎng)按拖拽 側(cè)滑菜單結(jié)合使用

  • 一直按住Item進(jìn)行拖拽排序,支持List、Grid形式。
  • 長(zhǎng)按拖拽并且和側(cè)滑菜單結(jié)合使用。

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

直接滑動(dòng)刪除 長(zhǎng)按拖拽Item排序

  • 側(cè)滑直接刪除,也可以長(zhǎng)按拖拽排序。
  • 可以指定某個(gè)Item不能被側(cè)滑刪除、不能被長(zhǎng)按拖拽。

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

豎型菜單 用自定義布局實(shí)現(xiàn)自己的菜單

  • 給菜單設(shè)置排列方向,支持橫向、豎向。
  • 開發(fā)者用庫(kù)中的SwipeMenuLayout開發(fā)自己的側(cè)滑菜單。

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

recyclerview長(zhǎng)按拖拽,recyclerview側(cè)滑刪除,recyclerview側(cè)滑菜單

使用介紹

這里列出關(guān)鍵實(shí)現(xiàn),具體請(qǐng)參考demo,或者加最上面的交流群一起討論。 更多教程請(qǐng)進(jìn)入我的博客查看。

啟用SwipeReyclerView的長(zhǎng)按Item拖拽功能和側(cè)滑刪除功能

recyclerView.setLongPressDragEnabled(true);// 開啟長(zhǎng)按拖拽recyclerView.setItemViewSwipeEnabled(true);// 開啟滑動(dòng)刪除。recyclerView.setOnItemMoveListener(onItemMoveListener);// 監(jiān)聽拖拽和側(cè)滑刪除,更新UI和數(shù)據(jù)。

添加Item側(cè)滑菜單

側(cè)滑菜單支持自動(dòng)打開某個(gè)Item的菜單,并可以指定是左邊還是右邊的:

// 打開第一個(gè)Item的左側(cè)菜單。recyclerView.openLeftMenu(0);// 打開第一個(gè)Item的右側(cè)菜單。recyclerView.openRightMenu(0);

第一步,引用自定義View:SwipeMenuReyclerView:

<com.yanzhenjie.recyclerview.swipe.SwipeMenuRecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior" />

第二步,設(shè)置菜單創(chuàng)建器、菜單點(diǎn)擊監(jiān)聽:

SwipeMenuRecyclerView swipeMenuRecyclerView = findViewById(R.id.recycler_view);// 設(shè)置菜單創(chuàng)建器。swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);// 設(shè)置菜單Item點(diǎn)擊監(jiān)聽。swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);

第三步,菜單創(chuàng)建器創(chuàng)建菜單:

/** * 菜單創(chuàng)建器。在Item要?jiǎng)?chuàng)建菜單的時(shí)候調(diào)用。 */private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() { @Override public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {  SwipeMenuItem addItem = new SwipeMenuItem(mContext)   .setBackgroundDrawable(R.drawable.selector_green)// 點(diǎn)擊的背景。   .setImage(R.mipmap.ic_action_add) // 圖標(biāo)。   .setWidth(size) // 寬度。   .setHeight(size); // 高度。  swipeLeftMenu.addMenuItem(addItem); // 添加一個(gè)按鈕到左側(cè)菜單。  SwipeMenuItem deleteItem = new SwipeMenuItem(mContext)   .setBackgroundDrawable(R.drawable.selector_red)   .setImage(R.mipmap.ic_action_delete) // 圖標(biāo)。   .setText("刪除") // 文字。   .setTextColor(Color.WHITE) // 文字顏色。   .setTextSize(16) // 文字大小。   .setWidth(size)   .setHeight(size);  swipeRightMenu.addMenuItem(deleteItem);// 添加一個(gè)按鈕到右側(cè)側(cè)菜單。.  // 上面的菜單哪邊不要菜單就不要添加。 }};

更多使用方法請(qǐng)參考Demo。

第四步,繼承SwipeMenuAdapter,和正常的Adapter一樣使用:

public class MenuAdapter extends SwipeMenuAdapter<MenuAdapter.DefaultViewHolder> { @Override public int getItemCount() {  return 0; } @Override public View onCreateContentView(ViewGroup parent, int viewType) {  return null; } @Override public ViewHolder onCompatCreateViewHolder(View realContentView, int viewType) {  return null; } @Override public void onBindViewHolder(MenuAdapter.DefaultViewHolder holder, int position) { }}

就到這里,更多的細(xì)節(jié),請(qǐng)參考demo和源碼,源碼demo下載傳送門

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿荣旗| 桓仁| 河津市| 五华县| 伊吾县| 尉犁县| 外汇| 陇南市| 秀山| 玉屏| 上高县| 灵武市| 诸城市| 体育| 沾化县| 金川县| 咸宁市| 太湖县| 辽宁省| 青冈县| 中超| 清苑县| 张北县| 军事| 武鸣县| 盐源县| 孝昌县| 寻乌县| 肃宁县| 开江县| 星子县| 疏附县| 韶关市| 东丰县| 盐池县| 隆德县| 长宁县| 隆安县| 楚雄市| 保定市| 兴隆县|