Dialog普通对话框
//构建器
//AlertDialog构造方法为protect
//名字叫Builder的过多所以用AlertDialog.Builder避免错误
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("提示");
builder.setMessage("您确定退出程序吗?");
builder.setPositiveButton("确0定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.setNegativeButton("取消", null);
builder.show();//等价于下面两句
//AlertDialog dialog=builder.create();
//dialog.show();
//这一句也可以
//builder.create().show();
写在某个你想让他出现的button下就写在监听事件中
自定义对话框
1.先在layout中新建一个Layout Resource File像布局页面一样设置该layout
2.在values-theme文件中设置风格name任意parent写parent="android:style/Theme.Dialog"
设置标题为无背景为透明
<style name="mydialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style>
3.新建一个class并使用setContentView()绑定刚写的布局文件
4.实例化对话框(参数一环境上下文this,参数2步骤二创建的style R.style.mydialog)并展示show();
并监听对应的按钮
public MyDailog(@NonNull Context context, int themeResId) { super(context, themeResId); //为对话框设置布局 setContentView(R.layout.dailog_layout); findViewById(R.id.yes).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { System.exit(0); } }); findViewById(R.id.no).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dismiss(); } }); }
(PopupWindow)popup对话框
写布局文件如popup.xml写要的进行相应操作
在res文件中吸新建Android Resouce Directory
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="0"
android:toXDelta="0"
android:fromYDelta="300"
android:toYDelta="0"
android:duration="2">
</translate>
</set>
并在theme中加
<style name="translate_anim">
<item name="android:windowEnterAnimation">@anim/translate</item>
</style>
private void showPopupWindow(View view) { //弹窗需要的视图对象 ,将View转为java对象,因为PopoupWindow需要View的java对象 //父容器 View v = LayoutInflater.from(this).inflate(R.layout.popup_layout, null); //实例化popupwindow对象 //参数1用在弹窗中的View 参数2,3.弹窗的宽高 参数4focusable能否获取焦点 PopupWindow popwin = new PopupWindow(v, 250, 100, true); //设置 //设置背景 透明 popwin.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); //设置能响应外部的点击事件 popwin.setOutsideTouchable(true); //设置能响应点击事件 popwin.setTouchable(true); //1创建动画资源 2创建style应用动画资源 3对当前弹窗的动画风格设置为第二步资源索引 popwin.setAnimationStyle(R.style.translate_anim); //显示 //参数1anchor:锚,参数2参数3相对于锚xy的偏移量 popwin.showAsDropDown(view,51,51); //为弹窗中文本添加点击事件安卓12不支持在这里显示Toast v.findViewById(R.id.choose).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this,"你点击了选择",Toast.LENGTH_SHORT); popwin.dismiss();//弹窗消失 } }); v.findViewById(R.id.choose_all).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this,"你点击了全选",Toast.LENGTH_SHORT); popwin.dismiss(); } }); v.findViewById(R.id.copy).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this,"你点击了复制",Toast.LENGTH_SHORT); Log.e("vewvwv","ngvwng;lbn;nnn;"); popwin.dismiss(); } }); }