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>