多達288種動態(tài)效果的側(cè)滑菜單開源庫,滿足您項目的各種需求
演示:
首先是實現(xiàn)效果的總覽:
這里寫圖片描述
這里寫圖片描述
然后是單獨效果的演示:
位移動畫演示:
這里寫圖片描述
縮放動畫演示:
這里寫圖片描述
透明度動畫演示:
這里寫圖片描述
旋轉(zhuǎn)動畫演示:
這里寫圖片描述
全局圖片沉浸演示:
這里寫圖片描述
模糊背景演示:
這里寫圖片描述
動態(tài)模糊演示:
這里寫圖片描述
反向動態(tài)模糊演示
這里寫圖片描述
單一的動畫就演示完了,下面演示幾組組合動畫
這里寫圖片描述
這里寫圖片描述
好了,就演示這么多了,因為組合動畫太多了,演示不完的
簡單計算一下:
(位移動畫(3種)*縮放動畫(2種)*透明動畫(2種)*旋轉(zhuǎn)動畫(6種),圖片背景效果(4種)=288(種),另外包括縮放,透明度,3D旋轉(zhuǎn),動態(tài)模糊都能設置范圍,所以可定制的效果就更多了.
接下來就該介紹一下使用方法:
用于測試的Demo
上演示了很多效果,同時動態(tài)的顯示了當前效果要進行的代碼設置方法,同時還包含一些小提示,建議您先下個Demo
先看看.Demo下載
xml
布局文件中的使用方法:
<?xml version="1.0" encoding="utf-8"?>
<com.brioal.swipemenu.view.SwipeMenu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_swipemenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.brioal.swipemenudemo.MainActivity">
<include layout="@layout/left_menu"/>
<include layout="@layout/right_content"/>
</com.brioal.swipemenu.view.SwipeMenu>
布局文件非常簡單,包含兩個xml
布局,上邊的是菜單布局,下邊的是內(nèi)容布局
如果是最簡單的使用那么這樣設置已經(jīng)足夠了,默認的是固定不動的滑動方式
如果要對滑動的參數(shù)和效果進行定制,那么可以看一下資源文件中的設置(都有注釋,理解起來不難)
<declare-styleable name="SwipeMenu">
<!--動畫的代碼-->
<attr name="sm_type" format="integer"/>
<!--滑出菜單的范圍-->
<attr name="sm_dragoffset" format="dimension"/>
<!--滑出菜單距邊界的值-->
<attr name="sm_menuoffset" format="dimension"/>
<!--滑動開始的縮放值-->
<attr name="sm_startscale" format="float"/>
<!--滑動開始的alpha值-->
<attr name="sm_startalpha" format="float"/>
<!--滑動開始的3D旋轉(zhuǎn)角度-->
<attr name="sm_start3dangle" format="integer"/>
</declare-styleable>
關于動畫代碼這里解釋一下
為了方便定制動畫效果,用一個4位數(shù)字來表示不同的動畫組合,個位代表的旋轉(zhuǎn)動畫效果序號,十位代表透明度動畫效果,千位代表縮放動畫效果,萬位代表位移動畫效果,各個位置的起始都是1,有幾種動畫效果上限就是多少.比如位移動畫有三種,則萬位的范圍就為1~3,其他依次類推.
注:因為背景,模糊效果會引入多余的組件,所以只在需要的時候添加進去,故不包含在動畫代碼中,設置方式下面再說.
再貼一個xml
屬性與代碼的實現(xiàn)表格
代碼實現(xiàn) | xml實現(xiàn) | 功能 |
---|---|---|
setStyleCode(int type) |
sm_type` | 設置動畫效果代碼 |
setMenuOffset(int menuOffset) |
sm_menuoffset |
設置拉出菜單距離右邊界的距離 |
setDragWipeOffset(int dragWipeOffset) |
sm_dragoffset |
設置觸發(fā)滑動的范圍,為0則是全屏 |
setStartScale(float minScale) |
sm_startscale |
設置起始縮放 |
setStartAlpha(float startAlpha) |
sm_startalpha |
設置起始透明度 |
setStart3DAngle(int start3DAngle) |
sm_start3dangle |
設置起始3D旋轉(zhuǎn)角度 |
setFullColor(Activity activity, int headColor) |
無 | 設置全局顏色 |
setBackImage(Activity activity, int backBitmap, int headColor) |
無 | 設置全局圖片背景并沉浸 |
setBlur(Activity activity, int backBitmap, int headColor, float blur) |
無 | 設置全局模糊背景并指定模糊程度 |
setChangedBlur(Activity activity, int backBitmap, int headColor) |
無 | 設置全局動態(tài)模糊(范圍默認0~25f) |
setReverseChangedBlur(Activity activity, int backBitmap, int headColor) |
無 | 設置反向動態(tài)模糊背景(范圍默認0~25f) |
setChangedBlur(Activity activity, int backBitmap, int headColor, float startBlur, float endBlur) |
無 | 設置指定范圍的動態(tài)模糊 |
setOnMenuShowingListener(onSwipeProgressListener listener) |
無 | 設置滑動監(jiān)聽,回調(diào)獲取菜單隱藏到顯示的進度,范圍(0~1.0f) |
changeAllColor(int color) |
無 | 改變?nèi)诸伾?需要先設置全局顏色) |
isMenuShowing() |
無 | 當前菜單是否顯示 |
showMenu() |
無 | 顯示菜單 |
hideMenu() |
無 | 隱藏菜單 |
提供的方法就這么多,也不難理解,這里再說一點注意事項
1.默認是不設置全局背景或者顏色的,所以如果需要全局顏色沉浸和背景沉浸請做相關設置.兩種沉浸都兼容到4.4
2.全局顏色支持動態(tài)更換,全局圖片背景不支持,當時想的是應該沒有這種需求,當然如果有的話可以跟我反饋我會添加.
3.旋轉(zhuǎn)動畫其實就一個3D旋轉(zhuǎn)效果比較好,其他的都是瞎添的,如果要用的話建議和透明度動畫一起使用,可防止卡頓(單獨用中心旋轉(zhuǎn)卡頓明顯,畢竟繪圖的代價擺在那)
為了方便同學們對效果進行設置,我在演示Demo
中添加了參數(shù)設置顯示的效果,就在RecyclerView
的第一個Item
,并且是可以動態(tài)更改的,當前的效果需要如何設置參數(shù)全部在上面顯示出來了.
另外用RecyclerView
來顯示提示的另一個目的是演示滑動沖突的處理,默認的是菜單和內(nèi)容都是可以處理橫向縱向的滑動操作的,只有當滑動在靠近菜單內(nèi)容交集點的時候才會觸發(fā)滑動.當然也可以設置全屏滑動和設置觸發(fā)的范圍,具體方法查看上面表格內(nèi)的方法,這里就不重復了.
使用介紹就到這里了,下面介紹如何添加依賴庫:
Android Studio
的話跟其他庫一樣,在你們App
的build.gradle
內(nèi)的dependencies
下添加
compile 'com.brioal:SwipeMenu:1.0'