滑动退出Activity的两种方法

最近遇到需求,需要滑动退出Activity,参考了大虾们的方案后整理出了两种主流的方法:
  • 使用OnTouchEvent,处理触摸事件实现滑动退出
  • 使用ViewDragHelper拖动实现滑动退出
两种方法各有利弊,遇到界面上的滑动或滚动事件产生冲突的需要自己处理,下面就来详细的介绍两种实现方法。

0.前提

两种方法不管使用哪一种都需要设置透明主题及Activity中根布局的background,以实现滑动时,上一个Activity可见。
Activity根布局背景:
    android:background="?android:colorBackground"
Activity主题:
    <style name="Translucent" parent="AppTheme">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@android:style/Animation</item>
    </style>

1.使用OnTouchEvent,处理触摸事件实现滑动退出

先来看看具体实现:
/**
 * @author Steven Duan
 * @version 1.0
 */

public class SlideLayout extends FrameLayout {

  private static final String T = SlideLayout.class.getName();

  private Activity mActivity;
  private Scroller mScroller;
  private int mShadowWidth;
  private Drawable mLeftShadow;
  private int mLastMoveX;
  private int mScreenWidth;
  private int mMinX;

  public SlideLayout(Activity activity) {
    this(activity, null);
  }

  public SlideLayout(Activity activity, AttributeSet attrs) {
    this(activity, attrs, 0);
  }

  public SlideLayout(Activity activity, AttributeSet attrs, int defStyleAttr) {
    super(activity, attrs, defStyleAttr);
    Log.d(T, "
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Activity 切换效果通常可以使用 Android 系统提供的四种动画效果来实现,分别是:overridePendingTransition、ActivityOptions、ViewAnimationUtils 和 Transition。具体来说: 1. overridePendingTransition:这是一种简单的 Activity 切换动画效果,可以在 startActivity 或者 finish 方法中调用,用于在当前 Activity 退出或者新的 Activity 进入时添加动画效果。该方法需要传入两个参数,分别是进入和退出时的动画效果。 2. ActivityOptions:这是一种比较灵活的 Activity 切换效果,可以实现一些特殊的切换动画效果,如共享元素动画等。该方法需要传入一个 Bundle 对象,用于指定要添加的动画效果。 3. ViewAnimationUtils:这是一种可以实现圆形揭示动画的效果,适用于 Android 5.0 及以上版本的系统。该方法需要传入一个 View 对象、开始和结束的圆形半径以及动画的持续时间。 4. Transition:这是一种比较复杂的 Activity 切换效果,可以实现多种动画效果,如淡入淡出、滑动、缩放等。该方法需要使用 Android 系统提供的 Transition 类实现,并且需要在 XML 文件中定义动画效果。使用时需要在 Activity 中调用 getWindow().setEnterTransition() 和 getWindow().setExitTransition() 方法来指定进入和退出时的动画效果。 以上四种方法都可以用于实现 Activity 切换效果,具体选择哪种方法可以根据实际需求和个人喜好来决定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值