很久以前就對微信的這個改進大呼驚艷(今天發(fā)現(xiàn)ios系統(tǒng)上幾乎每個應(yīng)用都有這樣的設(shè)定笔横,果然人的眼界需要放高放遠傅是,是時候買個iphone壓壓驚)摄欲,也想在android上實現(xiàn)一番惑淳,這幾天恰好有個機會來實踐一波炬藤。
最終目標:
- 界面左側(cè)100dp內(nèi)右滑finish窗口操作的實現(xiàn)
參考資料:
-
Android-通過SlidingPaneLayout高仿微信6.2最新版手勢滑動返回(一)
參看:demo
-
Android-通過SlidingMenu高仿微信6.2最新版手勢滑動返回(二)
參看:demo
SlidingMenu與SlidingPanelLayout的區(qū)別:
其實實現(xiàn)的原理都一樣御铃,只不過是把SlidingPaneLayout換成SlidingMenu而已,不過SlidingMenu本身的功能比官方自帶的強大沈矿,不僅可以實現(xiàn)像微信一樣的邊緣滑動返回上真,還支持全屏幕滑動返回。你還可以添加動畫效果
-
參看:demo
作者做出的demo比較有些缺憾羹膳,一旦在界面上ACTION_DOWN睡互,整個界面的最左側(cè)就直接移動到了手指按下的位置。原理是使用onTouchListener建了一個繼承于LinearLayout的TouchLinearLayout,作為頁面的根布局陵像。
實踐過程:
一開始使用了第三項資料中的方式就珠,它的實現(xiàn)需要與布局文件相關(guān)而且完成得不好,調(diào)試了幾遍沒有結(jié)果醒颖,應(yīng)該是我的View的事件分發(fā)機制沒有學(xué)好妻怎,帶我看完《Android開發(fā)藝術(shù)探索》相關(guān)章節(jié),應(yīng)該會有更深的理解泞歉,暫時還是放棄了逼侦。
接著改用資料二中的SlidingPanelLayout,只需要改寫我現(xiàn)有的BaseActivity,主要步驟如下:
- 在manifest為執(zhí)行這一操作的Activity加上android:theme
"@style/JK.SwipeBack.Transparent.Theme"
具體看這里:styles.xml - 在BaseActivity的onCreate()中添加initSwipeBackFinish()
代碼看這里:BaseActivity.java - implements SlidingPaneLayout .PanelSlideListener 共三個方法——
onPanelClosed:進行過一次右滑但是最終彈回遠處 onPanelOpened:進行過一次右滑且最終關(guān)閉了界面
onPanelSlide:界面滑動中 - 要實現(xiàn)這個滑動finish操作的始末兩個Activity都必須繼承BaseActivity
目前的結(jié)果:
- 尚未達到最終目標腰耙,但在整個界面內(nèi)可以實現(xiàn)右滑finish榛丢,怎樣限定在界面左側(cè)100dp內(nèi)還需要進一步考慮。