从底部弹出的 Android Activity

在 Android 应用开发中,有时我们需要实现一个从底部弹出的界面效果,比如底部菜单、对话框等。本文将介绍如何通过设置 Activity 的动画效果,实现一个从底部弹出的界面。

实现步骤

1. 创建一个新的 Activity

首先,我们需要创建一个新的 Activity,用于展示从底部弹出的界面。可以通过 Android Studio 的 New -> Activity -> Empty Activity 快速创建一个新的空白 Activity。

2. 设置 Activity 的主题样式

在创建的 Activity 的 AndroidManifest.xml 文件中,为该 Activity 设置一个主题样式,以实现从底部弹出的效果。可以选择自定义一个主题样式,或者使用系统提供的样式,比如 Theme.AppCompat.Dialog

<activity android:name=".MyBottomActivity"
    android:theme="@android:style/Theme.AppCompat.Dialog" />

3. 设置 Activity 的进入和退出动画

在资源文件夹的 res/anim 目录下,创建两个动画资源文件,用于定义 Activity 的进入和退出动画效果。比如 slide_in_bottom.xmlslide_out_bottom.xml

slide_in_bottom.xml
<set xmlns:android="
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"/>
</set>
slide_out_bottom.xml
<set xmlns:android="
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="300"/>
</set>

4. 设置 Activity 的进入和退出动画

在新创建的 Activity 的 onCreate() 方法中,设置进入和退出动画。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my_bottom);
    getWindow().setWindowAnimations(R.style.DialogAnimation);
}

5. 启动 Activity

最后,在其他的 Activity 中通过 Intent 启动这个新创建的 Activity。

Intent intent = new Intent(this, MyBottomActivity.class);
startActivity(intent);

示例代码

下面是一个完整的示例代码,展示了如何实现一个从底部弹出的 Activity。

activity_my_bottom.xml

<LinearLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="@android:color/white">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is a bottom dialog"
        android:textSize="20sp"
        android:textColor="@android:color/black"/>
</LinearLayout>

MyBottomActivity.java

public class MyBottomActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_bottom);
        getWindow().setWindowAnimations(R.style.DialogAnimation);
    }
}

res/anim/slide_in_bottom.xml

<set xmlns:android="
    <translate
        android:fromYDelta="100%p"
        android:toYDelta="0"
        android:duration="300"/>
</set>

res/anim/slide_out_bottom.xml

<set xmlns:android="
    <translate
        android:fromYDelta="0"
        android:toYDelta="100%p"
        android:duration="300"/>
</set>

AndroidManifest.xml

<activity android:name=".MyBottomActivity"
    android:theme="@android:style/Theme.AppCompat.Dialog" />

总结

通过以上步骤,我们可以轻松实现一个从底部弹出的 Android Activity,为应用添加更加流畅和炫酷的界面效果。希望本文对你有所帮助,欢迎尝试并自行定制更多的动画效果!

gantt
    title 从底部弹出的 Android Activity 实现步骤
    section 创建新的 Activity
    完成创建新的 Activity   : done, a1, 2022-01-01, 1d
    
    section 设置