Dialog的使用



package com.example.sysdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener {
 Context context=MainActivity.this;
 Button btnDialog1, btnDialog2, btnDialog3, btnDialog4, btnDialog5,
   btnDialog6, btnDialog7, btnDialog8;
TextView textView;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initView();
 }

 /**
  * 初始化控件
  *
  */
 private void initView() {
  textView=(TextView) findViewById(R.id.textView1);
  btnDialog1 = (Button) findViewById(R.id.btn_dialog1);
  btnDialog2 = (Button) findViewById(R.id.btn_dialog2);
  btnDialog3 = (Button) findViewById(R.id.btn_dialog3);
  btnDialog4 = (Button) findViewById(R.id.btn_dialog4);
  btnDialog5 = (Button) findViewById(R.id.btn_dialog5);
  btnDialog6 = (Button) findViewById(R.id.btn_dialog6);
  btnDialog7 = (Button) findViewById(R.id.btn_dialog7);
  btnDialog8 = (Button) findViewById(R.id.btn_dialog8);
  // 添加单击事件
  btnDialog1.setOnClickListener(this);
  btnDialog2.setOnClickListener(this);
  btnDialog3.setOnClickListener(this);
  btnDialog4.setOnClickListener(this);
  btnDialog5.setOnClickListener(this);
  btnDialog6.setOnClickListener(this);
  btnDialog7.setOnClickListener(this);
  btnDialog8.setOnClickListener(this);
 }

 /**
  * 所有的单击事件
  *
  * @param arg0
  */
 @Override
 public void onClick(View view) {
  switch (view.getId()) {
  case R.id.btn_dialog1:
   dialog1();
   break;
  case R.id.btn_dialog2:
   dialog2();
   break;
  case R.id.btn_dialog3:
   dialog3();
   break;
  case R.id.btn_dialog4:
   dialog4();
   break;
  case R.id.btn_dialog5:
   dialog5();
   break;
  case R.id.btn_dialog6:
   dialog6();
   break;
  case R.id.btn_dialog7:
    dialog7();
    break;
  case R.id.btn_dialog8:
   dialog8();
   break;

  default:
   break;
  }
 }
/**
 * 最简单的第一种对话框
 * 一个确认按钮和一个取消按钮
 */
 private void dialog1() {
  //提醒对话框
  AlertDialog.Builder builder = new Builder(context);
  builder.setTitle("提示");//设置dal标题
  builder.setMessage("确认退出吗?");//设置消息内容
  //确认
  builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
    MainActivity.this.finish();
   }
  });
  //拒绝
  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    dialog.dismiss();
   }
  });
  //显示
  builder.create().show();
 }

 /**
  * 带图标和三个按钮的
  */
 private void dialog2() {
  
  AlertDialog.Builder builder = new Builder(context);
  builder.setIcon(R.drawable.ic_launcher);//设置dal左上角的图片
  builder.setTitle("你喜欢谁的人");//设置dal标题
  builder.setMessage("你喜欢的人在你身边吗?");//设置消息内容
  //确认
  builder.setPositiveButton("在身边", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    strToast("我喜欢的人在身边呢,开心!!!");
   }
  });
  //拒绝
  builder.setNegativeButton("不在", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int arg1) {
    strToast("我喜欢的人不在身边,伤心中!!!");
   }
  });
  //中立
  builder.setNeutralButton("没人", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int arg1) {
    strToast("还没有喜欢的人呢,啊哈哈!!!");
   }
  });
  builder.create().show();
 }
 
 
 /**
  * 带输入框的dlg
  */
 private void dialog3() {
  LayoutInflater inflater =LayoutInflater.from(context);
  View view=inflater.inflate(R.layout.dialog3_edt, null);
  final EditText dlgEditText1=(EditText) view.findViewById(R.id.dlg_editText1);
  AlertDialog.Builder builder = new Builder(context);
  builder.setIcon(android.R.drawable.ic_dialog_info);//获取系统图片资源
  builder.setTitle("请输入内容!");
  builder.setView(view);
  //确定
  builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int arg1) {
     String detail=dlgEditText1.getText().toString();//获得文本框内容
    strToast(detail);
   }
  });
  //取消
  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int arg1) {
    dialog.dismiss();
   }
  });
  builder.create().show();
 }
 
 
 
 /**
  * dlg带单选框
  */
 int myitem=0;
 private void dialog4() {
  final String item[]={"美女","RMB","权利"," 小鲜肉"};
  AlertDialog.Builder builder = new Builder(context);
  builder.setIcon(android.R.drawable.ic_dialog_info);//获取系统图片资源
  builder.setTitle("选择其中一项");
//  单选事件-参数第2位,为1表示进入时默认选择的是RMB
  builder.setSingleChoiceItems(item, myitem, new DialogInterface.OnClickListener() {
   //第2个参数int型的which是用来控制选择第几项的
   @Override
   public void onClick(DialogInterface dialog, int which) {
    myitem=which;
    strToast(item[which]);
    dialog.dismiss();
   }
  });
  //取消
  builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int arg1) {
    dialog.dismiss();
   }
  });
  builder.create().show();
 }
 
 
 String item[]={"美女","RMB","权利"," 小鲜肉"};
 boolean[] selected = new boolean[item.length];//默认的时候是为false
 
// boolean[] selected = new boolean[]{false,false,false,false};//也可以这样写默认的时候是为false
 /**
  * dlg复选框
  */
 private void dialog5() {
  AlertDialog.Builder builder = new Builder(context);
  builder.setCancelable(false);//点击其他地方的时候对话框不会消失
  builder.setIcon(android.R.drawable.ic_dialog_info);
  builder.setTitle("福利来了-可以多选哦!!!");
  builder.setMultiChoiceItems(item, selected, new DialogInterface.OnMultiChoiceClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    //判断为选择状态后将值赋值给selected数组,默认为false,点击为勾选状态是为true
     selected[which] = isChecked; 
   }
  });
  //确认
  builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    String count="";
    //将为true的值显示出来
    for (int i = 0; i < selected.length; i++) {
     if (selected[i]==true) {
      count=count+item[i]+"  ";//注意
     }
    }
    textView.setText(count);
    dialog.dismiss();      
   }
  });
  builder.create().show();
 }
 
 /**
  * 无按钮直接选择
  */
 private void dialog6() {
  String items[]={"这个是1","这个是2","这个是3","这个是4","这个是5","这个是6"};
  AlertDialog.Builder builder = new Builder(context);
  builder.setIcon(android.R.drawable.ic_dialog_info);
  builder.setTitle("请直接选择吧");
  builder.setItems(items, new DialogInterface.OnClickListener() {
   //这里面的额0-5指的是点击的是第几个
   @Override
   public void onClick(DialogInterface dialog, int which) {
    switch (which) {
    case 0:
     strToast("1被点击了");
     break;
    case 1:
     strToast("2被点击了");
     break;
    case 2:
     strToast("3被点击了");
     break;
    case 3:
     strToast("4被点击了");
     break;
    case 4:
     strToast("5被点击了");
     break;
    case 5:
     strToast("6被点击了");
     break;
    default:
     break;
    }
   }
  });
  builder.create().show();
 }
 
 /**
  * 简单自定义布局
  */
 private void dialog7() {
  LayoutInflater inflater =LayoutInflater.from(context);
  View view=inflater.inflate(R.layout.dialog7_view, null);
  AlertDialog.Builder builder = new AlertDialog.Builder(context);
  builder.setView(view);
  //注意这一句要不然关闭不了
  AlertDialog dialog=builder.show();
        dlg7InitView(view,dialog);
 }
 
 
 /**
  * 初始化自定义控件
  * @param view
  */
 private void dlg7InitView(View view,final AlertDialog builder) {
  final EditText edtId=(EditText) view.findViewById(R.id.edt_id);//账号
  final EditText edtpaw=(EditText) view.findViewById(R.id.edt_paw);//密码
  Button btnRight=(Button) view.findViewById(R.id.btn_right);//确认
  Button btnCancel=(Button) view.findViewById(R.id.btn_cancel);//取消
  btnRight.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View arg0) {
    builder.dismiss();
   strToast("得到账号为:"+edtId.getText().toString()+"\n"+"密码为:"+edtpaw.getText().toString());
   }
  });
  btnCancel.setOnClickListener(new OnClickListener() {
   
   @Override
   public void onClick(View arg0) {
    builder.dismiss();
   }
  });
 }
 
 
 
 
 private AlertDialog dialog;
 /**
  * 自定义可变换位置的dialog
  */
 private void dialog8() {
  AlertDialog.Builder builder = new AlertDialog.Builder(context,R.style.dialog);
  dialog=builder.show();
  dialog.setContentView(R.layout.dialog8_view);
  Window window=dialog.getWindow();
  WindowManager.LayoutParams lp=window.getAttributes();
  window.setWindowAnimations(R.style.AnimDialog);
  window.setGravity(Gravity.BOTTOM);
  lp.width=android.support.v4.view.ViewPager.LayoutParams.MATCH_PARENT;
  lp.height=android.support.v4.view.ViewPager.LayoutParams.WRAP_CONTENT;
  window.setAttributes(lp);
  
 dialog8InitView(window); 
 }
 /**
  * 初始化dialog8自定义的控件
  * @param window
  */
 private void dialog8InitView(Window window) {
  Button button1=(Button) window.findViewById(R.id.button1);
  Button button2=(Button) window.findViewById(R.id.button2);
  Button button3=(Button) window.findViewById(R.id.button3);
  Button button4=(Button) window.findViewById(R.id.button4);
  
  button1.setOnClickListener(clickListener);
  button2.setOnClickListener(clickListener);
  button3.setOnClickListener(clickListener);
  button4.setOnClickListener(clickListener);
 
 }
 View.OnClickListener clickListener=new OnClickListener() {
  @Override
  public void onClick(View view) {
   dialog.dismiss();
   switch (view.getId()) {
   case R.id.button1:
    strToast("button1");
    break;
   case R.id.button2:
    strToast("button2");
    break;
   case R.id.button3:
    strToast("button3");
    break;
   case R.id.button4:
    strToast("button4");
    break;

   default:
    break;
   }
  }
 };
 
 
 
 /**
  * 当Toast使用情况较多时,可以自己写个方法
  * @param str
  */
 private void strToast(String str){
  Toast.makeText(context, str, Toast.LENGTH_SHORT).show();    
 }
}


这个是dialog8的背景效果

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#e0ffffff"/>
    <!--     设置圆角 -->
<corners android:topLeftRadius="5dp"
    android:topRightRadius="5dp"
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="5dp"
    />
</shape>


这个是被点击时候的效果

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#22000000"/>
<!--     设置圆角 -->
<corners android:topLeftRadius="5dp"
    android:topRightRadius="5dp"
    android:bottomLeftRadius="5dp"
    android:bottomRightRadius="5dp"
    />
</shape>


设置成背景

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="false" android:drawable="@drawable/btn_bg"></item>
    <item android:state_pressed="true" android:drawable="@drawable/btn_bg1"></item>
</selector>

这个是进入时候的效果

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:toYDelta="0"
        android:fromYDelta="100%"
        android:duration="200"
        />

</set>

这个是退出时候的效果

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:toYDelta="50%"
        android:fromYDelta="0"
        android:duration="200"
        />

</set>


将效果放的style

<!--     dialog的进出效果 -->
<style name="AnimDialog" parent="@android:style/Animation">
    <item name="android:windowEnterAnimation">@anim/push_in</item>
    <item name="android:windowExitAnimation">@anim/push_out</item>
</style>

<style name="dialog" parent="@android:Theme.Dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>

</style>


相关联的3个布局文件

dialog3_edt.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" >

    <EditText
        android:id="@+id/dlg_editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10" >

        <requestFocus />
    </EditText>

</LinearLayout>


dialog7_view.xml-----------------------------------------------------------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:padding="20dp"
    android:background="#e0ffffff"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:padding="5dp"
        android:text="自定义账号登陆" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号:" />

        <EditText
            android:id="@+id/edt_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10" >

            <requestFocus />
        </EditText>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:" />

        <EditText
            android:id="@+id/edt_paw"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:inputType="textPassword" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/btn_right"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:layout_marginRight="80dp"
            android:text="确认" />

        <Button
            android:id="@+id/btn_cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="取消" />
    </LinearLayout>

</LinearLayout>


dialog8_view.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/button1"
        android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_click"
        android:text="Button1" />

    <Button
        android:id="@+id/button2"
          android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_click"
        android:text="Button2" />

    <Button
        android:id="@+id/button3"
          android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_click"
        android:text="Button3" />

    <Button
        android:id="@+id/button4"
          android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/btn_click"
        android:text="Button4" />

</LinearLayout>


最后是main------------------------------------------------

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_dialog1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="只有确认和取消按钮的" />

    <Button
        android:id="@+id/btn_dialog2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="带图标和三个按钮的" />

    <Button
        android:id="@+id/btn_dialog3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="带输入框的dlg" />

    <Button
        android:id="@+id/btn_dialog4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dlg带单选框" />

    <Button
        android:id="@+id/btn_dialog5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dlg复选框" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/btn_dialog6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="没有确定和取消的" />

    <Button
        android:id="@+id/btn_dialog7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自定义按钮" />
    <Button
        android:id="@+id/btn_dialog8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自定义按钮可换位置" />

</LinearLayout>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值