JPSpringMenu
Github Project傳送門
SpringMenu是一款滑動菜單,類似AndroidResidemenu,SlidingMenu,和其他滑動菜單之間最大的區(qū)別是:它提供的靈活性彈跳浑侥,結合了Facebook提供的強大動畫庫Rebound 抱虐。說那么多,還是看演示圖比較好
Design Sketch(PS技術不夠,不清晰掉色)
Usage
Gradle
dependencies {
compile 'com.jpeng:jpspringmenu:$latestVersion'
}
在Activity內初始化Menu
// R.layout.view_menu 是你自定義的Menu View的資源ID
SpringMenu menu = new SpringMenu(this,R.layout.view_menu);
// 為菜單做各種各樣的設置...
不要忘記在Activity重寫dispatchTouchEvent
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
return menu.dispatchTouchEvent(ev);
}
通過SpringConfig,你可以改變菜單和子布局的彈性速度和力量
// 另一種方式來構建SpringConfig是frombouncinessandspeed
mSpringMenu.setMenuSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(20,3));
mSpringMenu.setChildSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(20, 5));
如果有滑塊控件和菜單的一些沖突如叼,你可以試試addignoreview忽略它們
mSpringMenu.addIgnoreView(...);
MenuListener可以用來監(jiān)聽菜單事件的變化,里面有三種回調方法:
//打開后的回調
void onMenuOpen();
//關閉后的回調
void onMenuClose();
/**
* 當菜單正在被打開或者被關閉時,這個方法將會被回調(包含拖動弧度)
* @value: 0f-2f,0f表示菜單關閉,2f則表示打開
* @bouncing: 這個布爾值用來判斷菜單是否在反彈狀態(tài)
* 當處于反彈狀態(tài)時,這個值無限趨近于2f,否則就是0f
*/
void onProgressUpdate(float value,boolean bouncing);
剩余部分較為重要的Api
// 內容頁變暗的效果
setFadeEnable(boolean);
// 允許菜單開始拖動的距離
setDragOffset(float);
setMenuListener(MenuListener);
setDirection(int direction);
About Me
我是在讀大三的學生,來自一所非985非211吧,寫作不容易,求大神給個star吧
Final
至于菜單彈簧效果實現的原理,稍后再解析!!!
最后感謝AndroidResideMenu這awesome project給了我思路,順帶一句其實這個開源作者是我的...(秘密不能說!)