android 之对话框

我们大家都知道对话框的重要性。就比如下载时,就会弹出对话框告知用户下载进度。不然的话,用户就不知道。这样的应用显然吸引不住用户。用户看到半天没反应,肯定会卸载。所以。。。对话框的学习还是有必要的。哈哈哈。。。。

对话框的几个重要方法:

  • setTitle(String title);//设置标题
  • setIcon(int icon);//设置图标
  • setPositiveButton(String text,DialogInterface.OnClickListener listener);//添加按钮,
  • setNegativeButton(String text,DialogInterface.OnClickListener listener);//添加按钮
  • setMessage(String content);//对话框里的内容
  • setCancelable(boolean flag)//false 代表的是不能通过点击外面的地方关闭对话框。默认是true。
  • show()//必须调用的方法,不然不会显示出来

1.简单的对话框

每次讲代码时,首先先看运行结果,我们程序猿就是这样。哈哈

这里写图片描述

activity_main.xml布局文件,是不是很简单。


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/id_commen"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="普通对话框" />
        </LinearLayout>

接下来我们就编写我们的代码。

MainAcitivity.java代码

public class MainActivity extends AppCompatActivity {
 private Button mBtn_com;
  private AlertDialog.Builder mDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initWidgets();//初始化控件
      //普通按钮点击事件
        mBtn_com.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mDialog = new AlertDialog.Builder(MainActivity.this);
                mDialog.setTitle("this is title");//设置标题
                mDialog.setIcon(R.mipmap.ic_launcher);//设置图标
                mDialog.setMessage("this is a content");//对话框里的内容
                mDialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了取消按钮", Toast.LENGTH_SHORT).show();
                    }
                });
                mDialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了确定按钮", Toast.LENGTH_SHORT).show();
                    }
                });
                mDialog.setCancelable(false);
                mDialog.show();//此方法是显示对话框

            }
        });
        }
         //初始化控件
    private void initWidgets() {
        mBtn_com = (Button) findViewById(R.id.id_commen);
    }

是不是很简单,哈哈,接下来我们接着学习 有进度的对话框。。
在我们刚才写的activity_main.xml布局文件在添加一个按钮,添加的内容为:


    <Button
        android:id="@+id/id_progress"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="进度条对话框" />

在我们的 MainAcitivity.java代码添加以下代码。这里运到了handler知识。因为子线程不能更改UI,

Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == 0x123) {
                Toast.makeText(MainActivity.this, "下载完成", Toast.LENGTH_SHORT).show();
            }
        }
    };
 //为进度条按钮添加点击事件
        mBtn_progress.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mProgressDialog = new ProgressDialog(MainActivity.this);
                mProgressDialog.setIcon(R.mipmap.ic_launcher);
                mProgressDialog.setTitle("this is a title");
                mProgressDialog.setMessage("this is a content");

                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//水平的进度条
                // mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);//环形进度条
                new Thread() {
                    @Override
                    public void run() {
                        super.run();
                        for (int i = 0; i < 100; i++) {
                            mProgressDialog.setProgress(i);
                            try {
                                sleep(100);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }
                        mProgressDialog.dismiss();
                        handler.sendEmptyMessage(0x123);
                    }
                }.start();

                mProgressDialog.setCancelable(false);
                mProgressDialog.show();
            }
        });

别忘了在initWidgets()初始化该ProgressDialog对象,还有在开始时声明它

写完后就赶快运行。哈哈。

这里写图片描述

到现在我们已经学完两种对话框了。不要停。我赶紧学习第三种对话框TimePickerDialog 时间对话框。。activity_main.xml布局文件在加个按钮。代码如下:

activity_main.xml代码下添加


  <Button
        android:id="@+id/id_time"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="时间对话框" />

MainAcitivity.java添加一下代码

    //时间按钮添加点击事件
        mBtn_time.setOnClickListener(new View.OnClickListener() {
            Calendar clc=Calendar.getInstance();//获取日历对象
           int  HOUR= clc.get(Calendar.HOUR_OF_DAY);//获取当前的时
            int MINTUE=clc.get(Calendar.MINUTE);//获取当前的分

            @Override
            public void onClick(View v) {
                mTimeDialog=new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                        Toast.makeText(MainActivity.this,"你选的时间为:"+hourOfDay+":"+minute,Toast.LENGTH_SHORT).show();
                    }
                },HOUR,MINTUE,true);

                mTimeDialog.setCancelable(false);
                mTimeDialog.show();
            }
        });

别忘了在initWidgets()初始化该TimePickerDialog对象,还有在开始时声明它

运行效果

这里写图片描述

学到这里。我们已经了解了三种对话框。其实对话框的写法都差不多。接下来再学习一种对话框。日期对话框。

activity_main.xml代码下添加

    <Button
        android:id="@+id/id_date"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="日期对话框" />

MainAcitivity.java添加一下代码

 //为日期按钮添加点击事件
        mBtn_date.setOnClickListener(new View.OnClickListener() {
            Calendar clc=Calendar.getInstance();//获取日历对象
            int YEAR=clc.get(Calendar.YEAR);//获取当前年份
            int MONTH=clc.get(Calendar.MONTH);//获取当前的月份
            int DAY=clc.get(Calendar.DAY_OF_MONTH);//获取当前的天
            @Override
            public void onClick(View v) {
                mDateDialog=new DatePickerDialog(MainActivity.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                        Toast.makeText(MainActivity.this,"你选的日期为:"+year+"-"+(monthOfYear+1)+"-"+dayOfMonth,Toast.LENGTH_SHORT).show();
                    }
                },YEAR,MONTH,DAY);
                mDateDialog.setCancelable(false);
                mDateDialog.show();
            }
        });

(monthOfYear+1)加1的原因是我们获取的不是我们当前的月。外国人计算方式跟我们不一样。要加1才是。别忘了在initWidgets()初始化该TimePickerDialog对象,还有在开始时声明它

运行效果

这里写图片描述

总结

我们已经学完四种常用的对话框。其实还有几种对话框。实现方法大概都差不多。掌握了这几种对话框,我想其他的对话框,我们学习起来也是一如反掌 ,哈哈哈。。。。
其实我也是个自学者。。。加油!!!

源码下载
https://github.com/songshuilin/AndroidForBlog 欢迎大家fork star 一起加油!!!


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 Android 自定义对话框,你可以通过以下步骤来实现: 1. 创建一个新的类继承自 DialogFragment,这将作为你的自定义对话框的实现类。 ```java public class CustomDialogFragment extends DialogFragment { // 在这里实现你的自定义对话框逻辑 } ``` 2. 在你的布局文件定义自定义对话框的外观。可以使用 LinearLayout、RelativeLayout 或者其他布局容器来构建对话框的外观。 ```xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <!-- 在这里添加对话框的内容,比如文本、按钮等 --> </LinearLayout> ``` 3. 在自定义对话框的实现类,重写 `onCreateDialog` 方法,将布局文件与对话框关联起来。 ```java @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); LayoutInflater inflater = getActivity().getLayoutInflater(); View dialogView = inflater.inflate(R.layout.custom_dialog_layout, null); builder.setView(dialogView); // 在这里设置对话框的标题、按钮等内容 return builder.create(); } ``` 4. 在需要显示对话框的地方,创建并显示你的自定义对话框实例。 ```java CustomDialogFragment dialog = new CustomDialogFragment(); dialog.show(getSupportFragmentManager(), "custom_dialog"); ``` 这就是一个基本的 Android 自定义对话框的实现过程。你可以进一步扩展自定义对话框的功能,根据你的需求添加文本、按钮、点击事件等等。希望这能帮到你!如果有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值