一個(gè)強(qiáng)大的側(cè)滑菜單控件ASwipeLayout
前言
該控件的優(yōu)點(diǎn):
1.無論是在RecyclerView,ListView,還是LinearLayout等,只要是ViewGroup用該控件都能實(shí)現(xiàn)側(cè)滑。
2.控件的手勢滑動(dòng)沖突已解決,不會(huì)出現(xiàn)嵌套到ScrollView等控件出現(xiàn)滑動(dòng)不流暢的情況
3.控件使用簡單,只需要在xml外套一層該控件就好了,秒接入
4.點(diǎn)擊事件很方便,原來什么寫法就什么寫法
1.效果圖


2.使用方式其實(shí)挺簡單的,在設(shè)計(jì)的時(shí)候,就是想著怎么簡單怎么來
2.1引入庫:
Step 1. Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation 'com.github.WelliJohn:ASwipeLayout:0.0.2'
}
2.2在需要側(cè)滑的布局的根布局中添加下面這段代碼,注意注釋的地方才是可以定制的:
<?xml version="1.0" encoding="utf-8"?>
<wellijohn.org.swipevg.ASwipeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/ll_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF"
android:orientation="horizontal">
//在這里是實(shí)現(xiàn)你的主item的東西,根據(jù)你們的項(xiàng)目隨便添加
</LinearLayout>
<LinearLayout
android:id="@+id/right_menu_content"
android:layout_width="wrap_content"
android:layout_height="match_parent">
//在這里是實(shí)現(xiàn)右側(cè)的菜單,根據(jù)你們的項(xiàng)目隨便添加
</LinearLayout>
</wellijohn.org.swipevg.SwipeLayout>
注意在這里ll_content,right_menu_content是一定要的,這個(gè)id對應(yīng)的布局不要自己去改變,以后有需要會(huì)放開,目前的話,一般的情況你們只需要定制主item的內(nèi)容和右側(cè)菜單欄了,在這里我也省去了定義一些額外的自定義view了,單純就是用id,來區(qū)分主item和右側(cè)的菜單。
3.因?yàn)镽ecyclerView中有復(fù)用Item的情況,針對這種情況的解決方案
因?yàn)閕tem復(fù)用會(huì)使得當(dāng)我們滑出某個(gè)menu的時(shí)候,再進(jìn)行RecyclerView的上下滑動(dòng)時(shí),會(huì)使得其他的Item也滑出了menu,這就是item復(fù)用導(dǎo)致了布局錯(cuò)亂,所以針對這類型的問題的話,我在這里已經(jīng)提供了OnSwipeStateChangeListener接口,在這里你們可以記錄下滑動(dòng)的狀態(tài),在onBindViewHolder方法里面,根據(jù)狀態(tài)來設(shè)定Item是打開menu還是關(guān)閉menu:
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final Person person = mDatas.get(position);
holder.scrollDelLl.setOpen(person.isOpen());
holder.scrollDelLl.setOnSwipeStateChangeListener(new OnSwipeStateChangeListener() {
@Override
public void onSwipeStateChange(boolean open) {
person.setOpen(open);
}
});
}
如上代碼就可以解決Item復(fù)用導(dǎo)致布局錯(cuò)亂的問題了(粑粑再也不用擔(dān)心RecyclerView復(fù)用的問題了)。
4.如果你們在項(xiàng)目使用的過程中,有新的需求或者是bug的話,可以在github上提你們的需求或者issue
5.代碼已上傳github,ASwipeLayout
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android Filterable實(shí)現(xiàn)Recyclerview篩選功能的示例代碼
這篇文章主要介紹了Android Filterable實(shí)現(xiàn)Recyclerview篩選功能的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Android項(xiàng)目中g(shù)radle的執(zhí)行流程
大家好,本篇文章主要講的是Android項(xiàng)目中g(shù)radle的執(zhí)行流程,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01
Android中findViewById獲取控件返回為空問題怎么解決
這篇文章主要介紹了Android中findViewById獲取控件返回為空問題怎么解決的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
Android自定義view實(shí)現(xiàn)帶header和footer的Layout
這篇文章主要介紹了Android自定義view實(shí)現(xiàn)帶header和footer的Layout,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-02-02
Android項(xiàng)目實(shí)現(xiàn)黑名單攔截效果
本篇文章主要介紹了Android項(xiàng)目實(shí)現(xiàn)黑名單攔截效果,可以根據(jù)白名單或者黑名單攔截,測試可以攔截電話,有需要的朋友可以了解一下。2016-10-10
Android實(shí)現(xiàn)帶簽到贏積分功能的日歷
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)帶簽到贏積分功能的日歷,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
Android Studio OkHttpClient使用教程詳解
這篇文章主要介紹了Android Studio OkHttpClient使用教程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

