Android高级界面组件的学习(三)

简介: 这次的高级界面组件学习我要讲的是对话框。在平时的APP使用中,我们经常会在点击某个按钮的时候,可能会弹出一个长方形或类似长方形的框框,提示我们进行选择,并且会伴随着两个按钮——“确定”和“取消”,这就是我们最常见的对话框了。

这次的高级界面组件学习我要讲的是对话框。在平时的APP使用中,我们经常会在点击某个按钮的时候,可能会弹出一个长方形或类似长方形的框框,提示我们进行选择,并且会伴随着两个按钮——“确定”和“取消”,这就是我们最常见的对话框了。

用的最多的对话框应该就是AlertDialog了,但是我们往往会希望自定义对话框的布局,所以今天我介绍一下AlertDialog和它的多种展示模式,此外就是说一下自己是怎么自定义Alertdialog的。

一、AlertDialog之显示提示消息的对话框

1.首先是新建一个工程,在activity_main.xml定义四个点击按钮,并且在MainActivity中为这四个按钮设置监听,其中findViewById和onClickListener()的相关代码省略。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/color_home_bottom_weitao">

    <Button
        android:id="@+id/btn_alert_dialog_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:layout_centerInParent="true"
        android:text="@string/alert_dialog_simple"
        android:textColor="@color/white" />

    <Button
        android:id="@+id/btn_alert_dialog_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_alert_dialog_1"
        android:padding="5dp"
        android:layout_centerInParent="true"
        android:text="@string/alert_dialog_list"
        android:textColor="@color/white" />

    <Button
        android:id="@+id/btn_alert_dialog_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_alert_dialog_2"
        android:padding="5dp"
        android:layout_centerInParent="true"
        android:text="@string/alert_dialog_radio"
        android:textColor="@color/white" />


    <Button
        android:id="@+id/btn_alert_dialog_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_alert_dialog_3"
        android:padding="5dp"
        android:layout_centerInParent="true"
        android:text="@string/alert_dialog_checkbox"
        android:textColor="@color/white" />

</RelativeLayout>
 

2. 把四个按钮实例化并且设置了监听之后,在onClick()方法中为四个按钮的点击事件调用相对应的方法:

(1)首先是简单提示对话框具体代码和实现,这里我们设置两个Button——“确定”和“取消”,也就是setPositiveButton和setNegativeButton,如果只是需要一个Button的话那就直接设置一个Button即可。具体的实现代码如下(simple()方法是点击简单对话框的相应按钮调用的方法):

private void simple(View source) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            // 设置对话框的标题
            .setTitle("Do you like Android?")
                    // 设置对话框的标题左侧的icon
            .setIcon(R.drawable.home_icon)
                    // 设置对话框的提示内容
            .setMessage("If you like ,please select true \nelse cancel");
    // 添加确定按钮
    setPositiveButton(builder);
    // 添加取消按钮
    setNegativeButton(builder).create().show();

}
 
(2)同理写出简单列表对话框弹出的代码,其实和简单对话框没有太大的区别,只是定义了一个String类型的数组用来填充列表项,然后把setMessage()方法换成setItems()方法,具体方法的代码如下:
 
private String[] items = new String[]{"Android","JAVA","C++"};
 
private void simpleList(View source) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            // 设置对话框的标题
            .setTitle("What is your favorite?")
            // 设置对话框的标题左侧的icon
            .setIcon(R.drawable.home_icon)
            // 设置对话框的提示内容
            .setItems(items, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getActivity(), "You choosed" + items[which], Toast.LENGTH_SHORT).show();
                }
            });
    // 添加确定按钮
    setPositiveButton(builder);
    // 添加取消按钮
    setNegativeButton(builder).create().show();
}
(3)同理写出单选列表项对话框和多选列表项对话框,前者将简单对话框的setMessage()变成setSingleChoiceItem(),后者则是变成setMultiChoiceItems(),主要代码如下: 
 
 
// 设置对话框默认被选中的行,这里是“1”,对应第二行
.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        tvShow.setText("You choosed " + items[which]);
    }
});
 
// 设置对话框列表项是否被选中
.setMultiChoiceItems(items, new boolean[]{false, true, false}, null);

                               

上面算是对AlertDialog的一些简单实现,往往我们会想做更加高逼格的对话框。在AlertDialog中有一个setView方法,我们可以直接通过下列代码实现我们想要的对话框的显示:

private void customList(View source) {
    LinearLayout prompt = (LinearLayout) getActivity().getLayoutInflater()
    .inflate(R.layout.prompt_layout, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
            // 设置对话框的标题
            .setTitle("The AlertDialog By Myself")
                    // 设置对话框的标题左侧的icon
            .setIcon(R.drawable.home_icon)
                    // 设置对话框列表项是否被选中
            .setView(prompt);
    // 添加确定按钮
    setPositiveButton(builder);
    // 添加取消按钮
    setNegativeButton(builder).create().show();
}
 
如上图所示,红色框框内的部分就是对应的prompt_layout,有兴趣额的小伙伴可以自己尝试各种风格的对话框,这里也就不多说了,以上就是我对于AlertDialog的一些学习和了解,有不对的地方欢迎指正。

目录
相关文章
|
14天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
2月前
|
存储 Android开发 开发者
深入理解安卓应用开发的核心组件
【10月更文挑战第8天】探索Android应用开发的精髓,本文带你了解安卓核心组件的奥秘,包括Activity、Service、BroadcastReceiver和ContentProvider。我们将通过代码示例,揭示这些组件如何协同工作,构建出功能强大且响应迅速的应用程序。无论你是初学者还是资深开发者,这篇文章都将为你提供新的视角和深度知识。
|
2月前
|
数据可视化 Android开发 开发者
安卓应用开发中的自定义View组件
【10月更文挑战第5天】在安卓应用开发中,自定义View组件是提升用户交互体验的利器。本篇将深入探讨如何从零开始创建自定义View,包括设计理念、实现步骤以及性能优化技巧,帮助开发者打造流畅且富有创意的用户界面。
88 0
|
3月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
2月前
|
XML 前端开发 Java
安卓应用开发中的自定义View组件
【10月更文挑战第5天】自定义View是安卓应用开发的一块基石,它为开发者提供了无限的可能。通过掌握其原理和实现方法,可以创造出既美观又实用的用户界面。本文将引导你了解自定义View的创建过程,包括绘制技巧、事件处理以及性能优化等关键步骤。
|
2月前
|
测试技术 数据库 Android开发
深入解析Android架构组件——Jetpack的使用与实践
本文旨在探讨谷歌推出的Android架构组件——Jetpack,在现代Android开发中的应用。Jetpack作为一系列库和工具的集合,旨在帮助开发者更轻松地编写出健壮、可维护且性能优异的应用。通过详细解析各个组件如Lifecycle、ViewModel、LiveData等,我们将了解其原理和使用场景,并结合实例展示如何在实际项目中应用这些组件,提升开发效率和应用质量。
48 6
|
2月前
|
XML 数据可视化 Android开发
Android应用界面
Android应用界面中的布局和控件使用,包括相对布局、线性布局、表格布局、帧布局、扁平化布局等,以及AdapterView及其子类如ListView的使用方法和Adapter接口的应用。
25 0
Android应用界面
|
3月前
|
存储 开发框架 数据可视化
深入解析Android应用开发中的四大核心组件
本文将探讨Android开发中的四大核心组件——Activity、Service、BroadcastReceiver和ContentProvider。我们将深入了解每个组件的定义、作用、使用方法及它们之间的交互方式,以帮助开发者更好地理解和应用这些组件,提升Android应用开发的能力和效率。
209 5
|
2月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
50 0
|
3月前
|
XML Android开发 UED
💥Android UI设计新风尚!掌握Material Design精髓,让你的界面颜值爆表!🎨
随着移动应用市场的蓬勃发展,用户对界面设计的要求日益提高。为此,掌握由Google推出的Material Design设计语言成为提升应用颜值和用户体验的关键。本文将带你深入了解Material Design的核心原则,如真实感、统一性和创新性,并通过丰富的组件库及示例代码,助你轻松打造美观且一致的应用界面。无论是色彩搭配还是动画效果,Material Design都能为你的Android应用增添无限魅力。
70 1