編輯:Android資訊
在知乎客戶端上看到了這種效果,左滑Activity可以返回到上一界面,非常適合單手操作。

找了很久,終於在github上看到了SwipeBackLayout這個開源項目,地址:
https://github.com/ikew0ng/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); //禁止滑動刪除
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
Android Studio ndk-Jni開發詳解
Java Native Interface (JNI)標准是java平台的一部分,它允許Java代碼和其他語言寫的代碼進行交互。JNI 是本地編程接口,它使得在
Android 網絡請求詳解
我們知道大多數的 Android 應用程序都是通過和服務器進行交互來獲取數據的。如果使用 HTTP 協議來發送和接收網絡數據,就免不了使用 HttpURLConn
Android WebView 實現離線緩存閱讀
前言 本篇博客要實現的是一個離線下載和離線閱讀的功能,這是很多閱讀類app都常見的一個功能,典型的應用就是網易新聞。什麼是離線下載?其實這個概念是比較模糊,是離線
Android UI控件系列:TableLayout(表格布局)
TableLayout是一個以行、列顯示視圖View的視圖組 1、開始一個新的工程,名字叫做HelloTableLayout 2、打開res/layout/mai