Android實現Activity的滑動返回效果
介紹
在知乎客戶端上看到了這種效果,左滑Activity可以返回到上一介面,非常適合單手操作。
找了很久,終於在github上看到了SwipeBackLayout這個開源專案,地址:
實現
需要使用到的類:
SwipeBackActivity.java SwipeBackLayout.java ViewDragHelper.java
使當前的Activity繼承SwipeBackActivity
public class BaseActivity extends SwipeBackActivity { private SwipeBackLayout mSwipeBackLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mSwipeBackLayout = getSwipeBackLayout(); //設定滑動方向,可設定EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT); } }
在使用的主題中新增下面的屬性,否則滑動時activity的下層是黑色的
<item name="android:windowIsTranslucent">true</item>
當使用BaseActivity時,為了使首頁不會滑動刪除,只需如下設定即可
setSwipeBackEnable(false); //禁止滑動刪除
- 另外,這個滑動刪除的效果只能從邊界滑動才有效果,如果要擴大touch的範圍,可以呼叫
mSwipeBackLayout.setEdgeSize(int size);
但是上面這個方法不太好用,效果不明顯,推薦修改ViewDragHelper.java這個類原始碼中的getEdgeTouched(int x, int y)方法,如下
private int getEdgeTouched(int x, int y) { int result = 0; result = EDGE_LEFT;//這樣每次都是全屏左滑刪除 //解決只有點選螢幕左邊才有響應的問題 /*if (x < mParentView.getLeft() + mEdgeSize) result = EDGE_LEFT; if (y < mParentView.getTop() + mEdgeSize) result = EDGE_TOP; if (x > mParentView.getRight() - mEdgeSize) result = EDGE_RIGHT; if (y > mParentView.getBottom() - mEdgeSize) result = EDGE_BOTTOM;*/ return result; }
經過上面步驟,應該就能如期實現效果了。
下面放上我的Demo截圖:
這是Demo原始碼
開發工具:Android Studio
相關文章
- Activity側滑返回的實現原理
- 仿 “即刻APP” 滑動返回的效果APP
- iOS 實現UINavigation全屏滑動返回(二)iOSUINavigation
- Android側滑返回分析和實現(不高仿微信)Android
- Android 設定TextView滑動滾動條和滑動效果AndroidTextView
- Android 的滑動分析以及各種實現Android
- 實現抖音 “影片無限滑動“效果
- (十)如果實現滑動展示選單效果
- CSS實現頁面切換時的滑動效果CSS
- Android——Activity切換炫酷動畫實現Android動畫
- 微信小程式實現卡片左右滑動效果微信小程式
- 使用ViewPager和TabLayout來實現滑動切換效果ViewpagerTabLayout
- 記錄---實現抖音 “影片無限滑動“效果
- Flutter 仿iOS側滑返回案例實現FlutteriOS
- Swift全屏滑動返回Swift
- jQuery 效果 – 滑動jQuery
- Android側滑(右滑、下拉)返回控制元件 - SwipeBackLayoutAndroid控制元件
- 短視訊平臺搭建,實現banner自動滑動展示效果
- 手機直播原始碼,實現圖片瀑布流式滑動效果原始碼
- 登入頁Activity從下向上的彈出效果實現
- 直播app開發,實現輪播圖上下自動滑動展示效果APP
- 毛玻璃效果在Android的實現Android
- Android-Activity的啟動模式Android模式
- Android 實現GridView的橫向滾動,實現仿京東秒殺效果AndroidView
- 小程式 — 實現左滑刪除效果(列表)③
- 簡單介紹android實現可以滑動的平滑曲線圖Android
- Vue|NuxtJs仿探探介面|vue實現Tinder卡片疊加滑動效果VueUXJS
- [前端外掛] js返回頂部 效果實現前端JS
- Android實現蛛網背景效果Android
- Vue實現一個頁面快取、左滑返回的navigatorVue快取
- 直播軟體搭建,Android實現文字滾動播放效果Android
- uni-app 實現滑動列表(slider)頁面效果 完整程式碼示例APPIDE
- Flutter 實現類似美團外賣店鋪頁面滑動效果Flutter
- iOS 如何絲滑的側滑返回iOS
- Android開發中陰影效果的實現Android
- 短視訊系統,Android 使用MotionLayout實現動畫效果Android動畫
- vue路由切換滑動效果Vue路由
- Activity 的 "啟動流程"(基於 Android 9.0)Android
- Android中Activity的四種啟動方式Android