1.概述
iPhone的使用者在使用APP的時候,開啟很多頁面想關閉的時候只需要在螢幕的左側向右滑動即可退出當前頁面,這是iPhone沒有返回鍵的原因。但是這個效果很炫酷呀,能應用在Android上不是更好嗎,今天就來講一個這個功能的實現,不深究代碼,只講使用。
先上效果圖吧:
2.實現過程
添加依賴 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(); //設定滑動方向,可設定EDGE_LEFT, EDGE_RIGHT, EDGE_ALL, EDGE_BOTTOM mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_LEFT); mSwipeBackLayout.setEdgeSize(200);//滑動刪除的效果只能從邊界滑動才有效果,如果要擴大touch的範圍,可以調用這個方法 }}
通過setEdgeTrackingEnabled方法設定從什麼方向滑動退出
通過setEdgeSize方法設定滑動退出的邊界範圍
然後,下面依次是: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); //主 activity 可以調用該方法,禁用滑動退出 findViewById(R.id.btn_startSecondActivity).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(MainActivity.this, SecondActivity.class)); } }); }}
public class SecondActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); findViewById(R.id.btn_startThirdActivity).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivity(new Intent(SecondActivity.this, ThirdActivity.class)); } }); } /** * 當按下返回鍵時 */ @Override public void onBackPressed() { scrollToFinishActivity();//左滑退出activity }}
public class ThirdActivity extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_third); } /** * 當按下返回鍵時 */ @Override public void onBackPressed() { scrollToFinishActivity();//左滑退出activity }}
最最重要的來了,最重要的是把需要側滑退出的activity在資訊清單檔裡設定theme為透明樣式,要不側滑的時候底部是黑色,特別的難看。
<style name="NoTitleTranslucentTheme" parent="AppTheme"> <item name="android:windowNoTitle">true</item> <item name="android:windowIsTranslucent">true</item> </style>
建立一個style,在資訊清單檔裡引用即可。
至此,側滑退出的效果就可以實現啦,是不是很炫酷,有好的東西持續分享給大家,部落格持續更新中。。。