用SwipeBackLayout实现滑动关闭当前Activity

  说起SwipeBackLayout,我对它还是有一定怨念的。当时就希望能实现关闭当前Activity的效果,但完全搜不当相关的东西,最后好不容易搜到了这个SwipeBackLayout,觉得可以实现滑动关闭了,但用上后却出现了黑屏的问题,好在最后都解决了。这也说明了任何一个开源项目都是在不断完善的,完善的动力就是靠大家的提意见和热情,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,主要是便于测试的。好啦,你看使用方式十分简单吧,下面是源码:

源码下载:用开源项目SwipBackLayout实现滑动关闭Activity

时间: 2024-10-11 22:35:36

用SwipeBackLayout实现滑动关闭当前Activity的相关文章

Android 中 关闭部分 Activity 的方法总结

每一个activity都有自己的生命周期,被打开了最终就要被关闭. 四种结束当前的activity方法 //关闭当前activity方法一(最常用) finish(); //关闭当前界面方法二 android.os.Process.killProcess(android.os.Process.myPid()); //关闭当前界面方法三 System.exit(0); //关闭当前界面方法四 this.onDestroy(); 但如果已经启动了四个Activity:A,B,C和D, 在D Acti

android中关闭所有activity方法

在android中退出app时关闭所有Activity的方式有很多,例如发送一个全局的BroadCast.直接杀死当前的pid...但是如果我们做的功能是一个sdk那情况就不一样了..经过项目上线后惨痛的教训我们决定还是通过自定义Stack来管理我们的activity. 首先说说这个坑人的BroadCast,因为我们发送的是无序广播,不知道那个Activity会先收到,这个导致了一个严重的问题==后收到广播的Activity会重绘而我们的需求是不希望activity被重新创建bug一大堆:其次我

滑动关闭activity

// 手指上下滑动时的最小速度 private static final int YSPEED_MIN = 1000; // 手指向右滑动时的最小距离 private static final int XDISTANCE_MIN = 50; // 手指向上滑或下滑时的最小距离 private static final int YDISTANCE_MIN = 100; // 记录手指按下时的横坐标. private float xDown; // 记录手指按下时的纵坐标. private floa

Android中滑动关闭Activity

继承SwipeBackActivity即可实现向右滑动删除Activity效果 点击下载所需文件

Android 使用SwipeBackLayout实现滑动返回上一级页面——实战来袭

我们知道.APP在设计上习惯性的把返回button放在屏幕的左上角,那么,在非常多时候(尤其是大屏幕手机),操作改返回button,就会有诸多不便了.为了更加方便实现"返回"功能.如今的一些APP,如百度贴吧等.開始引入一种的新的交互方式,通过滑动屏幕.利用手势事件来高速且友好的实现该功能. 怎样高速实现上图的效果呢.Github上提供了一个开源的库SwipeBackLayout,地址:https://github.com/ikew0ng/SwipeBackLayout , 通过它,我

滑动关闭实现

1.加载gradle依赖:compile 'com.github.liuguangqiang.swipeback:library:[email protected]' 2.在布局上加入布局标签 <com.liuguangqiang.swipeback.SwipeBackLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipeBackLayout&quo

Android打开新的Activity并同时关闭当前Activity

Intent it = new Intent(); it.setClass(EditActivity.this, MainActivity.class); it.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(it); 重点是调用.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) 如果执行完当前Activity后无需跳转到其他指定的活动界面,则可以直接在执行完成后调用 EditActivity.thi

android开发步步为营之72:右滑关闭Activity

通过右滑手势关闭当前Activity,这个是很常见的需求,网上参考过几篇文章发现实现都比较复杂,他们大多自己另外写了个Layout,然后这个Layout当做页面的布局,经测试其实有更简单一点的方法,写个BaseActivity,其他Activity继承即可.这里给出代码,大家测试看看.有问题回馈一下,谢谢! package com.figo.study.activity; import android.app.Activity; import android.os.Bundle; import

新建一个Activity通过按钮打开它,再通过按钮关闭它

首先需要创建一个供打开和关闭的Activity,先在scr下当前项目的包中创建一个新类Activity1, 并选择让其继承自Activity类,如下图所示: 之后配置AndroidMainifest.xml文件处,配置之后AndroidMainfest.xml代码中多出一行 <activity android:name="Activity1" ></activity> 创建好之后在其中重写一个onCreate()方法,并且绑定到Activity1 package