Android实现SwipeBack(右滑退出)效果

效果演示

初始状态

滑动中状态

结束状态

这是目前实现在SegmentFault for Android v2.6中的效果。
一切一切的之前,感谢 ikew0ng/SwipeBackLayout
我使用这个库,并经过一些修改,支持了Android 4.0以上所有的版本。

我们来分析下SwipeBackLayout的源码

一些修改

我之前做过实验,碰到的最大问题是上层的Activity底下并不是透明的,因此看不见下层Activity的视图。
SwipeBackLayout中采用的方案是使用一个叫convertToTranslucent的未公开的api,再配合theme
windowIsTranslucent设置为true,即可实现上层的Window背景为透明。

这里要注意的地方是调用convertToTranslucent可以使用反射的方法进行调用,但是在Lollipop中,它的参数变成了两个,而在5.0以下是一个参数,所以需要在源码中对Util.convertActivityToTranslucent这个方法进行一些修改。

public static void convertActivityToTranslucent(Activity activity) {
    try {
        Class[] t = Activity.class.getDeclaredClasses();
        Class translucentConversionListenerClazz = null;
        Class[] method = t;
        int len$ = t.length;

        for(int i$ = 0; i$ < len$; ++i$) {
            Class clazz = method[i$];
            if(clazz.getSimpleName().contains("TranslucentConversionListener")) {
                translucentConversionListenerClazz = clazz;
                break;
            }
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Method var8 = Activity.class.getDeclaredMethod("convertToTranslucent", translucentConversionListenerClazz, ActivityOptions.class);
            var8.setAccessible(true);
            var8.invoke(activity, new Object[]{null, null});
        } else {
            Method var8 = Activity.class.getDeclaredMethod("convertToTranslucent", translucentConversionListenerClazz);
            var8.setAccessible(true);
            var8.invoke(activity, new Object[]{null});
        }
    } catch (Throwable e) {
    }

}

使得能适配4.0 - 5.0+所有的设备

转自:https://segmentfault.com/a/1190000002977515


扩展:

SwipeBackFragment

An Android library that can finish a Fragment&Activity with swipe-back gesture.

滑动Fragment&Activity边缘即可类似IOS一样,拖动返回。

原理分析:传送门, 如果你重度使用Fragment,不妨看看这个库Fragmentation

特性

1、Activity内Fragment数大于1时,滑动返回的是Fragment,否则滑动返回的是Activity。

2、支持左、右、左&右滑动(未来可能会增加更多滑动区域)

3、支持Scroll中的滑动监听

4、帮你处理了Fragment重叠的情况

Demo演示

详细使用:https://github.com/YoKeyword/SwipeBackFragment

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: Android右滑退出是指在Android应用程序中,用户可以通过从左侧或右侧滑动手指来退出当前活动(Activity)。这种功能可以为用户提供更加便利的交互方式和更好的使用体验。 实现这种功能需要通过对Android系统提供的触摸事件进行处理。具体来说,需要在当前活动的onTouchEvent方法中监听手指触摸事件,并根据手指的移动距离和方向来判断用户是否要退出当前活动。如果手指从右侧向左侧滑动的距离达到一定阈值,就认为用户要退出当前活动,并执行退出操作。 在实现Android右滑退出时,需要注意设置合适的滑动阈值,避免误操作和用户体验不佳的问题。同时,还需要进行一些优化,例如在滑动过程中显示退出提示、滑动动画等,以增强用户体验。 总之,Android右滑退出是一种非常实用的功能,可以提高用户的交互体验和操作效率,也是Android应用程序开发中常见的功能之一。 ### 回答2: Android手机在日常使用中,我们经常点击HOME键返回桌面或使用返回键退出当前应用。而有一种更方便的退出方式叫做右滑退出右滑退出是一种快速、方便的退出方式,可以让用户在任何页面都能迅速离开应用。不用返回键,也不用找HOME键。 在使用右滑退出之前,需要先启用这个功能。打开“设置”-“系统”-“开发者选项”-“页面堆栈”,开启“右滑手势调出导航栏”。 使用右滑退出的方法是,在任何界面,快速从屏幕的右侧向左滑动一下即可。系统会自动退出该应用并返回桌面。 但值得注意的是,右滑退出功能有一个限制,即当前应用必须是在前台运行的,或者是最近被使用过的应用。如果应用已经处于后台或者已经完全退出右滑功能将无效。 此外,用户在使用右滑退出时,需要注意一些其他的问题。例如,如果在滑动过程中手指稍微停留了一下,可能会导致应用进入多任务模式。同时,一些特殊的应用也可能不支持该功能。 总之,右滑退出是一个方便快捷的退出应用的方式,但也需要我们在使用时注意一些细节问题。如果用户能够掌握好这个功能,可以提高手机的使用效率,更加便捷、自如地使用各种应用。 ### 回答3: 安卓右滑退出是一项非常实用的功能,它能够让用户更加方便地退出一个应用程序,而不是通过“返回”按钮或是“Home”键来实现。如果你是一名经常使用安卓设备的用户,那么你可能已经习惯了通过右滑手势来退出应用程序。 对于安卓设备来说,大多数版本都已经内置了右滑退出的功能。你只需要在应用程序中向右滑动手势,就可以直接退出应用程序。不过,有些应用程序可能并没有集成这一功能,这时你需要在设备的设置中自行开启该功能。 具体来说,你需要进入设备的“设置”页面,在“系统”或“显示与手势”选项中找到“手势”设置。在手势设置中,你可以选择开启或关闭一些手势功能,例如右滑退出、双击亮屏等等。如果你想开启右滑退出功能,只需要将其开关打开即可。 除了安卓系统自带的右滑退出功能,还有一些第三方应用程序可以提供更加优秀的右滑退出功能。例如,SwipeBack这个应用程序就可以让你在任意应用程序中使用右滑退出功能,而且可以自定义右滑手势的行为,非常实用。 总之,在安卓设备中使用右滑退出功能,可以让你更加方便地退出一个应用程序,提高用户体验,建议大家在使用安卓设备的时候,尝试使用这个实用的功能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值