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日

相关文章

  • phpadmin安装

    PHPMyAdmin安装攻略 PHPMyAdmin是一个基于Web的MySQL数据库管理工具,可以通过Web界面管理MySQL数据库。本文将详细讲解PHPMyAdmin的安装过程,并提供两个示例说明。 步骤一:下载PHPMyAdmin 首先,需要从PHPMyAdmin的官方网站(https://www.phpmyadmin.net/)下载最新版本的PHPMy…

    other 2023年5月7日
    00
  • 关于python:如何进行不区分大小写的字符串比较?

    以下是关于“关于python:如何进行不区分大小写的字符串比较?”的完整攻略,包含两个示例。 如何进行不区分大小写的字符串比较 在Python中,我们可以使用lower()函数将字符串转换为小写,然后进行比较。以下是两个示例: 1. 使用lower()函数进行比较 str1 = "Hello World" str2 = "hel…

    other 2023年5月9日
    00
  • Python常用的文件及文件路径、目录操作方法汇总介绍

    下面是Python常用的文件及文件路径、目录操作方法汇总介绍的详细攻略。 文件操作方法 打开/关闭文件 在Python中,使用内置的open()函数打开文件。open()函数接受两个参数:文件名和以何种方式打开文件。文件名可以是绝对路径或相对路径。方式有“r”(读取)、“w”(写入)和“a”(追加)等。 # 打开一个文件 f = open("dem…

    other 2023年6月26日
    00
  • github常见操作和常见错误及其解决办法

    Spring Boot是一款基于Spring框架的快速开发框架,提供了丰富的功能和工具,可以帮助开发人员快速构建应用程序。本文将介绍Spring Boot的注解@Negative的作用和使用方法的完整攻略,包括注解的作用、使用方法和示例说明。 1. @Negative注解的作用 @Negative注解是Spring Boot中的一个校验注解,用于校验数值类型…

    other 2023年5月5日
    00
  • android实现简单进度条ProgressBar效果

    Android实现简单进度条ProgressBar效果攻略 1. 添加ProgressBar到布局文件 首先,在你的布局文件中添加一个ProgressBar组件。可以使用以下代码示例: <ProgressBar android:id=\"@+id/progressBar\" android:layout_width=\"m…

    other 2023年9月6日
    00
  • Eclipse怎么设置自动删除空白行和语句后多余空格?

    当使用Eclipse进行编程时,可以通过以下步骤设置自动删除空白行和语句后的多余空格: 打开Eclipse并导航到“Window”菜单,然后选择“Preferences”选项。 在弹出的对话框中,展开“Java”文件夹并选择“Code Style”子文件夹。 在右侧窗格中,选择“Formatter”选项卡。 点击“Edit”按钮以编辑当前选定的代码格式化配置…

    other 2023年7月27日
    00
  • Python发送邮件封装实现过程详解

    下面我将详细讲解“Python发送邮件封装实现过程详解”的完整攻略。 简介 邮件是我们日常生活和工作中必不可少的一部分。Python作为一门高效的编程语言,自然也提供了邮件发送功能的支持。在本文中,我们将学习如何用Python发送电子邮件,并将其封装成一个可重复使用的模块。 准备工作 在开始之前,我们需要安装一些库。首先,我们需要使用标准库的smtplib模…

    other 2023年6月25日
    00
  • 详解Vue项目中出现Loading chunk {n} failed问题的解决方法

    详解Vue项目中出现Loading chunk {n} failed问题的解决方法 在Vue项目开发过程中,有时候会出现“Loading chunk {n} failed”这样的错误提示,导致页面无法正常访问。这种情况通常是由于项目中的JavaScript代码被分割成多个块(chunks)时,某个块无法正确加载导致的。本文将详细讲解此问题的解决方法。 原因分…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部