1. 程式人生 > >android 仿ios右滑退出當前activity

android 仿ios右滑退出當前activity

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,在清單檔案裡引用即可。

至此,側滑退出的效果就可以實現啦,是不是很炫酷,有好的東西持續分享給大家,部落格持續更新中。。。