Android中五种常见的Dialog演示

Dialog的演示:

     日期选择Dialog      时间选择Dialog      普通Dialog     自定义Dialog    列表Dialog

Java代码实现如下:

import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
 //五种 常用的Dialog展示
public class MainActivity extends Activity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
    //按钮点击事件
   public void btnClick(View v){
      int id = v.getId();
      switch (id) {
      case R.id.datePicker:
         //获取日历
         Calendar calendar = Calendar.getInstance(); 
         DatePickerDialog dialog =
         new DatePickerDialog(this, new OnDateSetListener() {
            //选完日期点击完成按钮 会触发此方法
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                  int dayOfMonth) {
               Toast.makeText(MainActivity.this,"您选择的日期:"+year+"/"+(monthOfYear+1)+"/"+dayOfMonth ,
                     Toast.LENGTH_LONG).show();
            }
         }, calendar.get(Calendar.YEAR), 
            calendar.get(Calendar.MONTH), 
            calendar.get(Calendar.DAY_OF_MONTH));
         dialog.show();
         break;
      case R.id.timePicker :
         //时间选择Dialog
         /**
          * 1.上下文对象
          * 2.回调函数
          * 3.4 默认事件 小时和分
          * 5.是否是24小时  boolean类型
          */
         Date date = new Date();
         int hour = date.getHours();
         int min  = date.getMinutes();
         TimePickerDialog timePickerDialog =
         new TimePickerDialog(this, new OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
               // TODO Auto-generated method stub
               Toast.makeText(MainActivity.this,"您选择的时间:"+hourOfDay+":"+minute,
                     Toast.LENGTH_LONG).show();
            }
         }, hour, min, true);
         timePickerDialog.show();
         break;
      case R.id.alertDialog:
         //普通Dialog
          final AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setIcon(R.drawable.ic_launcher); //title旁边的图片
          builder.setTitle("提示");
          builder.setMessage("是否确认退出?"); //中间部分,具体的提示内容
         //最多有三个按钮 可写 可不写 2N 1P
          builder.setPositiveButton("确定", new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
            }
         });
          //中立按钮
          builder.setNeutralButton("忽略", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
               dialog.dismiss();
            }
         });
          builder.setNegativeButton("取消", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
               builder.show();
            }
         });
          builder.show();
         break;
         
      case R.id.customDialog:
         //自定义Dialog
         AlertDialog.Builder custom = new AlertDialog.Builder(this);
         custom.setIcon(R.drawable.img01);
         custom.setTitle("请登陆账号和密码");
         //布局填充器
         View view = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null);
         custom.setView(view);
         //显示你自定义的View
         final EditText  et_name = (EditText) view.findViewById(R.id.et_name);
         final EditText  et_pass = (EditText) view.findViewById(R.id.et_pass);
         custom.setPositiveButton("登陆", new OnClickListener() {
            
            @Override
            public void onClick(DialogInterface dialog, int which) {
               // TODO Auto-generated method stub
               //点击登陆的时候显示 输入的账号和密码
               Toast.makeText(MainActivity.this, "账号:"+et_name.getText()
                     +" 密码:"+et_pass.getText(), Toast.LENGTH_LONG).show();
            }
         });
         custom.show();
         break;
      case R.id.listDialog:
         //列表Dialog
         AlertDialog.Builder listBuilder  = new  AlertDialog.Builder(this);
         listBuilder.setIcon(R.drawable.img06); //设置显示图片
         listBuilder.setTitle("设置title");
         List<String> data = new ArrayList<String>();
         for (int i = 0; i < 20; i++) {
            data.add("i="+i);
         }
         ArrayAdapter<String> adapter =
               new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,data);
         //listView单条点击监听
         listBuilder.setAdapter(adapter, new OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
               //which 点击了第几个
               Toast.makeText(MainActivity.this, "您点击了第:"+which+"", Toast.LENGTH_LONG).show();
            }
         });
         listBuilder.show();
         break;
      }
   }
} 
Xml布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.android_day11_dialog.MainActivity" >

    <TextView
        android:id="@+id/tv_name"
        android:layout_marginTop="30dp"
        android:layout_centerHorizontal="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dialog的演示!"
        android:textSize="30sp"
        android:textColor="#f00"/>
    <Button
        android:id="@+id/datePicker"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:onClick="btnClick"
        android:text="日期选择Dialog"
        android:layout_below="@id/tv_name"
       />
    <Button
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:onClick="btnClick"
        android:text="时间选择Dialog"
        android:layout_below="@id/datePicker"/>

    <Button
        android:id="@+id/alertDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_centerHorizontal="true"
        android:onClick="btnClick"
        android:text="普通AlertDialog"
        android:layout_below="@id/timePicker"/>
    <Button
        android:id="@+id/customDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:onClick="btnClick"
        android:text="自定义Dialog"
        android:layout_below="@id/alertDialog"/>
    <Button
        android:id="@+id/listDialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        android:layout_centerHorizontal="true"
        android:onClick="btnClick"
        android:text="列表Dialog"
        android:layout_below="@id/customDialog"/>
</RelativeLayout>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值