用SwipeBackLayout實現滑動關閉當前Activity


  

  說起SwipeBackLayout,我對它還是有一定怨念的。當時就希望能實現關閉當前Activity的效果,但完全搜不當相關的東西,最后好不容易搜到了這個SwipeBackLayout,覺得可以實現滑動關閉了,但用上后卻出現了黑屏的問題,好在最后都解決了。這也說明了任何一個開源項目都是在不斷完善的,完善的動力就是靠大家的提意見和熱情,SwipeBackLayout作為中國的一款優秀開源項目值得讓大家稱贊!

項目地址:https://github.com/qmdx/SwipeBackLayout

 

一、讓需要滑動的Activity基礎自定義的style

這里就是為了解決滑動黑屏的問題

    <style name="KaleTheme" parent="AppBaseTheme">
        <!-- 解決activity切換時的黑屏問題 -->
        <item name="android:windowIsTranslucent">true</item>  
    </style>

 

styles.xml中的全部文件:

<resources>

    <!--
        Base application theme, dependent on API level. This theme is replaced
        by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
    -->
    <style name="AppBaseTheme" parent="Theme.AppCompat.Light">
        <!--
            Theme customizations available in newer API levels can go in
            res/values-vXX/styles.xml, while customizations related to
            backward-compatibility can go here.
        -->
    </style>

    <!-- Application theme. -->
    <style name="AppTheme" parent="AppBaseTheme">
        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
    </style>
    
    <style name="KaleTheme" parent="AppBaseTheme">
        <!-- 解決activity切換時的黑屏問題 -->
        <item name="android:windowIsTranslucent">true</item>  
    </style>

</resources>

 

我是直接用Application使用了這個樣式,僅僅為了演示。

 <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/KaleTheme" >

 

二、用Activity繼承一個類

如果你是要兼容Actionbar那么就繼承SwipeBackActionbarActivity,這個類是我自己改的,原來的lib中沒有。如果不用兼容,那么直接用SwipeBackActivity即可。

 

三、在方法中找到SwipeBackLayout,並設置滑動的區域和方向

這個就是簡單的設置,我直接貼代碼了。

package com.kale.swipbacklayouttest;

import me.imid.swipebacklayout.lib.SwipeBackLayout;
import me.imid.swipebacklayout.lib.app.SwipeBackActionbarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

/**
 * @author:Jack Tony
 * @tips  :如果要兼容,那么繼承SwipeBackActionbarActivity,否則繼承SwipeBackActivity
 * @date  :2014-10-31
 */
public class MainActivity extends SwipeBackActionbarActivity {

     private SwipeBackLayout mSwipeBackLayout;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mSwipeBackLayout = getSwipeBackLayout();
        //設置可以滑動的區域,推薦用屏幕像素的一半來指定
        mSwipeBackLayout.setEdgeSize(200);
        //設定滑動關閉的方向,SwipeBackLayout.EDGE_ALL表示向下、左、右滑動均可。EDGE_LEFT,EDGE_RIGHT,EDGE_BOTTOM
        mSwipeBackLayout.setEdgeTrackingEnabled(SwipeBackLayout.EDGE_ALL);
        
        Button btn = (Button)findViewById(R.id.open_button);
        btn.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO 自動生成的方法存根
                startActivity(new Intent(MainActivity.this,MainActivity.class));
            }
        });
    }


}

 

上面還添加了一個button,是用來開啟新的Activity,主要是便於測試的。好啦,你看使用方式十分簡單吧,下面是源碼:

 

源碼下載:http://download.csdn.net/detail/shark0017/8104885

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM