8.Android学习之消息、通知、广播与闹钟(一)

本文介绍了Android开发中如何使用Toast显示消息提示框,包括其特点和创建方法。同时,详细讲解了AlertDialog的用法,包括不同类型的对话框创建,并列举了相关方法。此外,还提及了使用AlertDialog.Builder生成列表对话框的相关内容。

目录

8.消息、通知、广播与闹钟(一)

1.通过Toast类显示消息提示框

2.使用AlertDialog类实现对话框


8.消息、通知、广播与闹钟(一)

1.通过Toast类显示消息提示框

Toast类通常用于显示一些快速提示信息,应用范围非常广泛。

应用Toast 类在屏幕中显示的消息提示框具有如下几个特点:

◆没有任何控制按钮。

◆不会获得焦点。

◆经过一段时间后会自动消失。

使用Toast类来显示消息提示框比较简单,只需要以下3个操作步骤即可实现:

(1)创建一个Toast对象。通常有两种方法,一种是使用构造方法进行创建,另一种是调用Toast类的makeText()方法创建。

使用构造方法创建一个名称为“toast” 的Toast对象的基本代码如下:

Toast toast=new Toast(this);

调用Toast 类的makeText()方法创建一个名称为“toast”的Toast对象的基本代码如下:

Toast toast=Toast.makeText(this,"要显示的内容",Toast.LENGTH_SHORT);

(2)调用Toast类提供的方法来设置该消息提示的对齐方式、页边距以及显示的内容等。常用的方法如表8.1所示。

表8.1 Toast 类的常用方法

方法描述
setDuration(int duration)用于设置消息提示框特续时间的长短,通常使用Toast.LENGTH_LONG或Toast.LENGTH_SHORT参数值
setGravity(int gravity, int xOffset, int yOffset)用于设置消息提示框的位置,参数gravity用于指定对齐方式,xOffset和yOffset用于指定具体的偏移值
setMargin(float horizontalMargin, float verticalMargin)用于设置消息提示的页边距
setText(CharSequence s)用于设置要显示的文本内容
setView(View view)用于设置将要在消息提示框中显示的视图

(3)调用Toast 类的show()方法显示消息提示框。需要注意的是,一定要调用该方法,否则设置的消息提示框将不显示。

2.使用AlertDialog类实现对话框

AlertDialog类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框。

使用AlertDialog生成的对话框通常可分为4个区域,分别是图标区、标题区、内容区和按钮区。

使用AlertDialog可以生成的对话框,概括起来有以下4种:

◆带确定、中立和取消等多个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加。例如,不需要有中立按钮,那么就可以生成只带有确定和取消按钮的对话框,也可以是只带有一个按钮的对话框。

◆带列表的列表对话框。

◆带多个单选列表项和多个按钮的列表对话框。

◆带多个多选列表项和多个按钮的列表对话框。

在使用AlertDialog类生成对话框时,常用的方法如表8.2所示。

表8.2 AlertDialog 类的常用方法

方法描述
setTitle(CharSequence title)为对话框设置标题
setlcon(Drawable icon)使用Drawable资源为对话框设置图标
setlcon(int resld)使用资源ID所指的Drawable资源为对话框设置图标
setMessage(CharSequence message)为提示对话框设置要显示的内容
setButton()为提示对话框添加按钮,可以是取消按钮、中立按钮和确定按钮。需要通过为其指定int类型的whichButton参数实现,其参数值可以是DialogInterface.BUTTON_POSITIVE(确定按钮)、BUTTON_NEGATIVE(取消按钮)、BUTTON_NEUTRAL(中立按钮)

通常情况下,使用AlertDialog类只能生成带多个按钮的提示对话框,要生成另外3种列表对话框需要使用AlertDalog.Builder类,AlertDalog.Builder类提供的常用方法如表8.3所示。

表8.3 AlertDialog.BuiIder类的常用方法

方法描述
setTitle(CharSequence title)为对话框设置标题
setlcon(Drawable icon)使用Drawable资源为对话框设置图标
setlcon(int resld)使用资源ID所指的Drawable资源为对话框设置图标
setMessage(CharSequence message)为提示对话框设置要显示的内容
setNegativeButton()为对话框添加取消按钮
setPositiveButton()为对话框添加确定按钮
setNeutralButton()为对话框添加中立按钮
setItems()为对话框添加列表项
setSingleChoiceItems()为对话框添加单选列表项

例:

MainActivity.java

package com.example.alertdialog;
​
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
​
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
​
public class MainActivity extends AppCompatActivity {
​
    private boolean[] checkedItems;//记录各列表项的状态
    private String[] items;//各列表项要显示的内容
​
​
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ActionBar actionBar=getSupportActionBar();
        actionBar.hide();
​
        /**
         * 显示带取消和确定按钮的对话框
         */
        Button bt1=(Button) findViewById(R.id.main_bt1);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建对话框对象
                AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).create();
                alertDialog.setIcon(R.drawable.advise);//设置对话框的图标
                alertDialog.setTitle("乔布斯");//设置对话框的标题
                //设置要显示的内容
                alertDialog.setMessage("活着就是为了改变世界,难道还有其他原因吗?");
                //添加取消按钮
                alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否",
                        new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this,"您单击了否按钮",
                                Toast.LENGTH_SHORT).show();
                    }
                });
                //添加确定按钮
                alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                Toast.makeText(MainActivity.this,"您单击了是按钮",
                                        Toast.LENGTH_SHORT).show();
                            }
                        });
                //显示对话框
                alertDialog.show();
            }
        });
​
        /**
         * 显示带列表的对话框
         */
        Button bt2=(Button) findViewById(R.id.main_bt2);
        bt2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建名言字符串数组
                final String[] items=new String[]{"当你有使命,它会让你更专注","要么出众,"+"要么出局",
                "活着就是为了改变世界","求知若渴,虚心若愚"};
                //创建列表对话框对象
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.drawable.advise1);//设置对话框的图标
                builder.setTitle("请选择你喜欢的名言:");//设置对话框的标题
                //添加列表项
                builder.setItems(items, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        Toast.makeText(MainActivity.this,"您选择了"+items[i],
                                Toast.LENGTH_SHORT);
                    }
                });
                builder.create().show();//创建对话框并显示
            }
        });
​
        /**
         * 显示带单选列表项的对话框
         */
        Button bt3=(Button) findViewById(R.id.main_bt3);
        bt3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //创建名字字符串数组
                final String[] items=new String[]{"扎克伯格","乔布斯","拉里·埃里森","安迪·鲁宾","马云"};
                //显示带单选列表项的对话框
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.drawable.advise2);//设置对话框的图标
                builder.setTitle("如果让你选择,你最想做哪一个:");//设置对话框的标题
                builder.setSingleChoiceItems(items, 0,
                        new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        //显示选择结果
                        Toast.makeText(MainActivity.this,"您选择了"+items[i],
                                Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setPositiveButton("确定",null);//添加确定按钮
                builder.create().show();//创建对话框并显示
            }
        });
​
        /**
         * 显示带多选列表项的对话框
         */
        Button bt4=(Button) findViewById(R.id.main_bt4);
        bt4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //记录各列表项的状态
                checkedItems = new boolean[]{false,true,false,true,false};
                //各列表项要显示的内容
                items = new String[]{"开心消消乐","球球大作战","欢乐斗地主","梦幻西游","超级玛丽"};
                //显示带多选列表项的对话框
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setIcon(R.drawable.advise2);//设置对话框的图标
                builder.setTitle("请选择您喜爱的游戏:");//设置对话框标题
                builder.setMultiChoiceItems(items, checkedItems,
                        new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                        checkedItems[i]=b;//改变被操作列表项的状态
                    }
                });
                //为对话框添加确定按钮
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        String result="";
                        for(int j=0;j<checkedItems.length;j++){
                            if(checkedItems[j]){//当选项被选择时
                                result+=items[j]+"、";//将选项的内容添加到result中
                            }
                        }
                        //当result不为空时,通过消息提示框显示选择的结果
                        if(!"".equals(result)){
                            //去掉最后面添加的顿号”、“
                            result=result.substring(0,result.length()-1);
                            Toast.makeText(MainActivity.this,"您选择了["+result+"]",
                                    Toast.LENGTH_SHORT).show();
                        }
                    }
                });
                builder.create().show();//创建对话框并显示
            }
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值