:添加依赖 compile ‘me.imid.swipebacklayout.lib:library:1.0.0’
至于为什么是添加库文件呢?后面在做解释。当然第二种方案也不是不可以的。
先写一个 BaseActivity 继承 SwipeBackActivity:
public class BaseActivity extends SwipeBackActivity {
private SwipeBackLayout mSwipeBackLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSwipeBackLayout = getSwipeBackLayout();
mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
}
}
然后,下面依次是:MainActivity ,SecondActivity ,ThreeActivity 分别继承自 BaseActivity 。
方法的调用都添加了注释,就不在多说啦。
public class MainActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setSwipeBackEnable(false);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
public class SecondActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SecondActivity.this, ThreeActivity.class));
}
});
}
@Override
public void onBackPressed() {
scrollToFinishActivity();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
public class ThreeActivity extends BaseActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_three);
}
/**
* 当按下返回键时
*/
@Override
public void onBackPressed() {
scrollToFinishActivity();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
最后你还需要在清单文件中,AppTheme 主题上,加上这个属性,要不然activity的背景应该是黑色的,很难看:
<item name="android:windowIsTranslucent">true</item>
到此,SwipeBackLayout基本用法就介绍完了。
SwipeBackLayout 的git地址
下面就解释一下,为什么项目依赖库,而不是直接添加依赖。
看一下,添加依赖后 SwipeBackActivity继承的是 FragmentActivity。

而我发现,依赖库的话,是这样的:

至于 继承 AppCompatActivity 和 继承 FramgmentActivity 有什么区别,我就不在多说啦。
总结:希望开源这个框架的大神,早日把 继承FramgmentActivity改成AppCompatActivity吧。当然继承FramgmentActivity也是可以的,不过后者更好一些,兼容性也更好。
当然如果你不想用别人的开源框架,自己写一个,来实现 activity 的滑动返回的效果,也是可以的。