自定义弹框,不用继承Dialog

import android.app.Dialog;
import android.content.Context;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

import com.ahqld.exam_assistant_app.R;
import com.ahqld.exam_assistant_app.config.appConfigKey;
import com.ahqld.exam_assistant_app.myview.SlideButton;
import com.ahqld.exam_assistant_app.util.MySharedPreferences;

import static android.graphics.Color.parseColor;

public class PracticeSettingDialog2 {

    private Context context;
    private Dialog dialog;
    private Display display;
    private LinearLayout lLayout_bg;
    public SlideButton bt1,bt2;
    public View view;
    private Back back;

    public PracticeSettingDialog2(Context context,Back back) {
        this.context=context;
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        display = windowManager.getDefaultDisplay();
        this.back=back;
    }

    public PracticeSettingDialog2 builder() {
        // 获取Dialog布局
        view = LayoutInflater.from(context).inflate(R.layout.practice_setting_dialog, null);
        lLayout_bg = view.findViewById(R.id.root);

        // 定义Dialog布局和参数
        dialog = new Dialog(context, R.style.AlertDialogStyle);
        dialog.setContentView(view);


//        int matchParent = ViewGroup.LayoutParams.MATCH_PARENT;//父布局的宽度
        Window dialogWindow = dialog.getWindow();
        dialogWindow.setBackgroundDrawableResource(android.R.color.white);


        dialogWindow.setGravity(Gravity.BOTTOM | Gravity.CENTER);
        // 调整dialog背景大小
        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display.getWidth()), WindowManager.LayoutParams.WRAP_CONTENT));

        init();
        return this;
    }

    private void init(){
        bt1=view.findViewById(R.id.bt1);
        bt1.setSmallCircleModel(parseColor("#cccccc"), parseColor("#00000000"), parseColor("#FF2196F3"), parseColor("#cccccc"));
        bt1.setOnCheckedListener(new SlideButton.SlideButtonOnCheckedListener() {
            @Override
            public void onCheckedChangeListener(boolean isChecked) {
                MySharedPreferences.setValue(context, appConfigKey.autoNext,isChecked+"");
                back.back();
            }
        });
        String autoNext = MySharedPreferences.getValue(context, appConfigKey.autoNext);
        System.out.println("autoNext="+autoNext);
        if(autoNext.equals("true") || autoNext.equals("")){
            bt1.setChecked(true);
        }else {
            bt1.setChecked(false);
        }

        bt2=view.findViewById(R.id.bt2);
        bt2.setSmallCircleModel(parseColor("#cccccc"), parseColor("#00000000"), parseColor("#FF2196F3"), parseColor("#cccccc"));
        bt2.setOnCheckedListener(new SlideButton.SlideButtonOnCheckedListener() {
            @Override
            public void onCheckedChangeListener(boolean isChecked) {
                MySharedPreferences.setValue(context,appConfigKey.sound,isChecked+"");
                back.back();
            }
        });
        String sound = MySharedPreferences.getValue(context, appConfigKey.sound);
        System.out.println("sound="+sound);
        if(sound.equals("true")||sound.equals("")){
            bt2.setChecked(true);
        }else {
            bt2.setChecked(false);
        }
    }

    public interface Back{
        void back();
    }
    public void show() {
        dialog.show();
    }
}


布局文件 view_alertdialog.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/lLayout_bg"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#aaa"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/txt_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textColor="@color/black"
        android:textSize="18sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/txt_msg"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center"
        android:textColor="@color/black"
        android:textSize="16sp" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:layout_marginTop="10dp"
        android:background="@color/alertdialog_line" />

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

        <Button
            android:id="@+id/btn_neg"
            android:layout_width="wrap_content"
            android:layout_height="43dp"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@color/actionsheet_blue"
            android:textSize="16sp" />

        <ImageView
            android:id="@+id/img_line"
            android:layout_width="0.5dp"
            android:layout_height="43dp"
            android:background="@color/alertdialog_line" />

        <Button
            android:id="@+id/btn_pos"
            android:layout_width="wrap_content"
            android:layout_height="43dp"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="@color/actionsheet_blue"
            android:textSize="16sp" />
    </LinearLayout>

</LinearLayout>

调用 和调用Dialog一样的

        new IosAlertDialog(this).builder().setTitle("退出当前账号")
                .setMsg("再连续登陆15天,就可变身为QQ达人。退出QQ可能会使你现有记录归零,确定退出?")
                .setPositiveButton("确认退出", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                }).setNegativeButton("取消", new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        }).show();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文会不定期更新,推荐watch下项目。 如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可...
    天之界线2010阅读 13,745评论 10 123
  • Day1: 在代码中通过R.string.hello_world可以获得该字符串的引用; 在XML中通过@stri...
    冰凝雪国阅读 1,651评论 0 5
  • 一、简历准备 1、个人技能 (1)自定义控件、UI设计、常用动画特效 自定义控件 ①为什么要自定义控件? Andr...
    lucas777阅读 5,394评论 2 54
  • 废话时间### 有一段时间没好好敲代码了,处理完手头上一些琐事,终于可以潜心修行,就从这篇简单而饱满的技术文章开始...
    三汪阅读 25,665评论 0 24
  • 四十年来,没有一位大师能够告诉我:什么是教育、生活?只有适合自己的文字、理念、方法,才对自己有用。中国的教育如“中...
    宁民阅读 123评论 0 0

友情链接更多精彩内容