文/程序員男神
前言
這個(gè)小功能也是最近接觸到撑柔,之前只知道這種交互方式,自己并沒有去實(shí)現(xiàn)您访∏Ψ蓿看了一下,才發(fā)現(xiàn)其實(shí)挺簡單的洋只。雖然簡單辆沦,但是用戶在交互方面的體驗(yàn)得到了不少提升。接下來我們看看他的簡單實(shí)用识虚,分析下它的實(shí)現(xiàn)源碼肢扯。
實(shí)用場景
一個(gè)界面(Activity)通過意圖跳轉(zhuǎn)至下個(gè)子Activity,當(dāng)子模塊的代碼執(zhí)行完畢后想返回到上層界面担锤,我們一般在導(dǎo)航欄左側(cè)放置一個(gè)返回按鈕蔚晨,或者點(diǎn)擊底部的虛擬返回按鍵返回。全面屏?xí)r代的熱潮肛循,讓我們對于手勢的操作更加便捷铭腕。SwipeBackLayout可以通過右滑的操作返回到上個(gè)操作界面。參考SwipeBackLayout的github地址多糠。
使用步驟
1累舷、添加依賴
compile 'me.imid.swipebacklayout.lib:library:1.1.0'
2、設(shè)置需要滑動(dòng)返回Activity的Theme
首先需要在需要滑動(dòng)返回的Activity的AppTheme里添加:
<item name="android:windowIsTranslucent">true</item>
3夹孔、在BaseActivity中初始化以及設(shè)置屬性
/**
* 描述: 基類activity
* 作者|時(shí)間: djj on 2019/1/17 13:45
* 博客地址: http://www.reibang.com/u/dfbde65a03fc
*/
public abstract class BaseActivity extends SwipeBackActivity {
private SwipeBackLayout mSwipeBackLayout;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.i(TAG, String.format("%s:onCreate", this));
if (getLayoutId() != 0) {
setContentView(getLayoutId());
}
ButterKnife.bind(this);
// 可以調(diào)用該方法被盈,設(shè)置是否允許滑動(dòng)退出
setSwipeBackEnable(true);
mSwipeBackLayout = getSwipeBackLayout();
// 設(shè)置滑動(dòng)方向,可設(shè)置EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM
mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT);
// 滑動(dòng)退出的效果只能從邊界滑動(dòng)才有效果搭伤,如果要擴(kuò)大touch的范圍只怎,可以調(diào)用這個(gè)方法
mSwipeBackLayout.setEdgeSize(200);
}
}
4、創(chuàng)建兩個(gè)activity只需要繼承BaseActivity即可怜俐,第一個(gè)activity添加一個(gè)按鈕跳轉(zhuǎn)到第二個(gè)activity身堡,第二個(gè)activity只需要右滑就可返回第一個(gè)activity
/**
* 描述: 主界面
* 作者|時(shí)間: djj on 2019/2/27 13:56
* 博客地址: http://www.reibang.com/u/dfbde65a03fc
*/
public class MainActivity extends BaseActivity {
@BindView(R.id.tv_show)
TextView mTvShow;
@Override
protected int getLayoutId() {
return R.layout.activity_main;
}
@Override
protected void initData() {
}
@OnClick(R.id.tv_show)
public void onViewClicked() {
startActivity(Main2Activity.class);
}
}
5、Main2Activity沒有什么操作拍鲤,這邊省略...