如何优雅地关闭 Android 应用程序?

androidmobile developmentapps/applications

简介

在许多 Android 应用程序中,我们可以看到在应用程序关闭时会添加一个动画,通过显示关闭动画来关闭应用程序。这将改善应用程序的用户界面。在本文中,我们将了解如何优雅地关闭 Android 应用程序?

实现

我们将创建一个简单的应用程序,其中我们将创建一个文本视图,用于显示应用程序的标题。然后,我们将创建一个按钮,用于关闭应用程序。现在,让我们转到 Android Studio 并在 Android Studio 中创建一个新项目。

步骤 1:在 Android Studio 中创建新项目

按照以下屏幕所示导航到 Android Studio。在下面的屏幕中,点击"新建项目"以创建一个新的 Android Studio 项目。

点击"新建项目"后,您将看到以下屏幕。

在此屏幕中,我们只需选择"空活动"并点击"下一步"。点击"下一步"后,您将看到以下屏幕。

在此屏幕中,我们只需指定项目名称。然后,软件包名称将自动生成。

注意− 确保选择 Java 作为语言。

指定所有详细信息后,点击"完成"以创建一个新的 Android Studio 项目。

项目创建完成后,我们将看到两个打开的文件,即 activity_main.xml 和 MainActivity.java 文件。

步骤 2:使用 activity_main.xml

导航到 activity_main.xml。如果此文件不可见,请打开此文件。在左侧窗格中,导航至 app>res>layout>activity_main.xml 以打开此文件。打开此文件后,将以下代码添加到其中。代码中添加了注释,以便您详细了解。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:id="@+id/idRLLayout"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:layoutDirection="ltr"
   android:paddingTop="8dp"
   android:paddingBottom="8dp"
   tools:context=".MainActivity">

   <!--     creating a text view on below line-->
   <TextView
       android:id="@+id/idTVHeading"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerInParent="true"
       android:layout_marginStart="20dp"
       android:layout_marginTop="20dp"
       android:layout_marginEnd="20dp"
       android:layout_marginBottom="20dp"
       android:padding="4dp"
       android:text="Close Application gracefully in Android"
       android:textAlignment="center"
       android:textColor="@color/black"
       android:textSize="20sp"
       android:textStyle="bold" />

   <!-- creating a button for closing the application on below line -->
   <Button
       android:id="@+id/idBtnClose"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_below="@id/idTVHeading"
       android:layout_centerHorizontal="true"
       android:layout_margin="16dp"
       android:backgroundTint="@color/purple_500"
       android:text="Close Application"
       android:textAllCaps="false" />
</RelativeLayout>

说明:在上面的代码中,我们创建了一个相对布局的根布局。在这个布局中,我们创建了一个文本视图,用于显示应用程序的标题。之后,我们创建一个按钮,通过为其添加关闭动画来关闭应用程序。

步骤 3:创建一个新的动画文件以添加动画

导航至 app>res>右键单击它>新建>资源目录,并将其命名为 anim。之后,右键单击该目录并创建一个新的动画文件,并将其命名为 animation.xml。创建文件后,向其中添加以下代码。代码中添加了注释,以便您详细了解。

  <?xml version="1.0" encoding="utf-8"?>
<!-- on below line creating an animation and adding duration to that animation -->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:duration="1000"
   android:fromAlpha="1.0"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:toAlpha="0.0" />

说明:在上面的代码中,我们通过创建 Alpha 通道来创建动画。首先,我们指定动画的持续时间(以毫秒为单位)。然后,我们创建一个 Alpha 通道,再创建一个 Alpha 通道,最后添加一个插值器。

步骤 4:使用 MainActivity.java 文件

导航到 MainActivity.java。如果此文件不可见,请在左侧窗格中导航至 app>res>layout>MainActivity.java 以打开此文件。打开此文件后,将以下代码添加到其中。代码中添加了注释,以便您详细了解。

package com.example.java_test_application;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.RelativeLayout;

import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
   // 为按钮和相对布局创建变量。
   private Button closeBtn;
   private RelativeLayout relativeLayout;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       //初始化下行相对布局和按钮的变量。
       closeBtn = findViewById(R.id.idBtnClose);
       relativeLayout = findViewById(R.id.idRLLayout);
       // 在下面的行中添加按钮的点击监听器来关闭应用程序。
       closeBtn.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               // 在下面的行中为动画创建一个变量并将我们在下面创建的动画添加到其中。
               Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.animation);
               // 在下面一行中为已创建的动画添加动画监听器。
               anim.setAnimationListener(new Animation.AnimationListener() {
                   // 在动画启动方法下创建以下行
                   @Override
                   public void onAnimationStart(Animation animation) {
                   }
                   // 在下面的行中创建一个动画结束方法,我们将在其中关闭我们的应用程序。
                   @Override
                   public void onAnimationEnd(Animation animation) {
                       // 在下面的代码中通过调用 finish 方法关闭我们的应用程序。
                       finish();
                   }
                   // 下面创建动画重复方法,当动画重复时将调用该方法。
                   @Override
                   public void onAnimationRepeat(Animation animation) {
                   }
               });
               // 在下面的行中,我们通过调用相对布局的开始动画方法来添加动画。
               relativeLayout.startAnimation(anim);
           }
       });
   }
}

说明:在上面的代码中,我们首先为按钮和相对布局(即我们的根布局)创建变量。现在我们来看一下 onCreate 方法。这是每个 Android 应用程序的默认方法。此方法在应用程序视图创建时被调用。在此方法中,我们设置内容视图,即名为 activity_main.xml 的布局文件,并从该文件设置 UI。在 onCreate 方法中,我们使用在 activity_main.xml 文件中指定的 ID 初始化按钮和相对布局变量。之后,我们为关闭应用程序按钮添加了一个点击监听器。在点击监听器方法中,我们为 Activity 创建一个动画,该动画将在应用程序关闭时应用。

在这个动画中,我们传递了我们创建的动画。之后,我们为动画添加了一个动画监听器。在此方法中,我们可以看到几个方法,例如 onAnimation start(动画启动时调用)和 onAnimation end(动画完成时调用)。在这个方法中,我们调用 finish 方法来关闭应用程序。之后,我们创建一个 onAnimationRepeat 方法,当需要重复动画时会调用该方法。最后,我们将动画添加到相对布局中,并通过调用 start animation 方法启动动画。

添加上述代码后,现在只需点击顶部栏中的绿色图标即可在移动设备上运行我们的应用程序。

注意− 确保您已连接到真实设备或模拟器。

输出

结论

在上文中,我们探讨了如何优雅地关闭 Android 应用程序?


相关文章