Android对话框

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();
        }
    });
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值