Android中Activity滑动关闭的效果

Android中Activity滑动关闭的效果攻略

在Android应用中,可以通过实现滑动关闭的效果,让用户通过滑动手势来关闭当前的Activity。下面是一个详细的攻略,包含了两个示例说明。

示例1:使用第三方库

  1. 首先,在项目的build.gradle文件中添加以下依赖项:
dependencies {
    implementation 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
}
  1. 在需要实现滑动关闭效果的Activity中,添加以下代码:
import com.jakewharton.viewpagerindicator.OnPageChangeListener;

public class MyActivity extends AppCompatActivity implements OnPageChangeListener {
    private ViewPager mViewPager;
    private PagerAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my);

        mViewPager = findViewById(R.id.viewPager);
        mAdapter = new MyPagerAdapter(getSupportFragmentManager());
        mViewPager.setAdapter(mAdapter);
        mViewPager.addOnPageChangeListener(this);
    }

    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        // 实现滑动关闭的逻辑
        if (position == mAdapter.getCount() - 1 && positionOffset == 0 && positionOffsetPixels == 0) {
            finish();
        }
    }

    @Override
    public void onPageSelected(int position) {
        // Do nothing
    }

    @Override
    public void onPageScrollStateChanged(int state) {
        // Do nothing
    }
}

示例2:自定义实现

  1. 在需要实现滑动关闭效果的Activity中,添加以下代码:
public class MyActivity extends AppCompatActivity {
    private float startX;
    private float startY;

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                startX = event.getX();
                startY = event.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                float endX = event.getX();
                float endY = event.getY();
                float distanceX = endX - startX;
                float distanceY = endY - startY;

                // 判断滑动方向和距离
                if (Math.abs(distanceX) > Math.abs(distanceY) && Math.abs(distanceX) > 100) {
                    if (distanceX > 0) {
                        // 向右滑动
                        finish();
                    } else {
                        // 向左滑动
                        // Do nothing
                    }
                }
                break;
            case MotionEvent.ACTION_UP:
                // Do nothing
                break;
        }
        return super.onTouchEvent(event);
    }
}

以上就是实现Android中Activity滑动关闭的两个示例说明。你可以根据自己的需求选择其中一种方式来实现滑动关闭效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中Activity滑动关闭的效果 - Python技术站

(0)
上一篇 2023年8月21日
下一篇 2023年8月21日

相关文章

  • debug.print的用法

    以下是关于debug.print的完整攻略,包括基本介绍、用法、示例说明等内容。 1. 基本介绍 debug.print是一种在VBA中用于输出调试信息的方法。它可以将变量的值、函数的返回值等信息输出到Immediate窗口中,方便我们在调试程序时查看变量的值和程序的执行情况。 2. 用法 以下是使用debug.print的详细用法: 输出变量的值。我们可以…

    other 2023年5月10日
    00
  • python重用父类功能的两种方式实例详解

    标题:Python重用父类功能的两种方式实例详解 简介 在面向对象编程中,子类可以继承父类的属性和方法,但有时候我们需要在子类中重用父类的方法。接下来,我们将学习如何在Python中实现这个功能,并且将介绍两种不同的方法,分别是继承和组合。 方法一:继承 在继承中,子类可以继承父类的属性和方法,并且可以在子类中重构那些需要修改的方法。这就是Python中实现…

    other 2023年6月26日
    00
  • linux下输入长文件名小技巧

    当在Linux系统下输入长文件名时,我们经常会遇到一些棘手的问题。比如有些文件名很长并且包含了一些特殊字符,如空格、括号等,这些特殊字符会造成文件与目录的定位困难,从而使得命令执行失败。以下是几种Linux下输入长文件名的小技巧,可以很好地解决这些问题。 1. 使用反斜线 反斜线()是Linux中一个特殊字符,它可以用来转义其他特殊字符。在输入长文件名时,我…

    other 2023年6月26日
    00
  • 基于http.server搭建局域网服务器过程解析

    下面是基于http.server模块搭建局域网服务器的完整攻略: 1. 环境安装 首先,我们需要安装Python,安装过程就不在这里赘述了,这里以Python 3为例。Python 3自带了http.server模块,无需额外安装。 2. 创建服务器 在本地电脑的某个文件夹下,打开终端或命令行窗口,在其中输入命令: python -m http.server…

    other 2023年6月27日
    00
  • 获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)

    获取用户IP地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)攻略 1. 介绍 在网络应用程序中,获取用户的IP地址是一项常见的需求。IP地址可以用于识别用户、进行地理定位或进行安全审计等目的。然而,获取用户IP地址的过程中存在一些常见的安全隐患,其中之一是HTTP_X_FORWARDED_FOR头部的伪造。 2. 获取用户IP地址的通用…

    other 2023年7月29日
    00
  • polybase指南

    PolyBase指南 PolyBase是一种用于在SQL Server中查询外部数据源的工具。它使得处理分散在不同数据源中的大量数据变得更加容易。PolyBase可以查询多种类型的数据源,包括Hadoop、Azure Blob Storage、Oracle等。 安装和配置 要使用PolyBase,你需要先安装它。在安装SQL Server时,PolyBase…

    其他 2023年3月29日
    00
  • linux目录详解linux目录结构详细分析

    Linux目录详解:Linux目录结构详细分析 Linux系统的一大特色就是其树形目录结构,不同于其他操作系统的文件结构。 在本文中,我们将会深入分析整个Linux目录结构的每一个主要目录,以及它们的作用和用途。 根目录(/) 根目录是整个Linux目录结构的顶级目录,在Linux中,所有的目录和文件都挂载在根目录下。 示例 下面是一个例子,它演示了如何列出…

    other 2023年6月27日
    00
  • bootstrap时间控件

    Bootstrap时间控件 Bootstrap是一款流行的前端开发框架,它提供了很多UI组件和交互效果。其中一个常用的组件就是时间控件。 Bootstrap时间控件是基于网站开发过程中常用的日期和时间输入框进行扩展的。它提供了日期和时间输入框、时间选择器和日期选择器等多种控件类型,可以满足不同场景下的需求。 时间输入框 时间输入框是最简单的Bootstrap…

    其他 2023年3月29日
    00
合作推广
合作推广
分享本页
返回顶部