Android 自定义dialog步骤

1.建类继承dialog

2.写构造方法

3.声明各类控件

4.写oncreate()

setContentView引入布局

初始化声明的控件

5.可以自定义style

6.可以申明内部接口并创建内部实例用于点击事件中,然后让外部引用者实现接口方法

7.可以重写show()方法设置dialog窗口大小位置

8.可以设置自定义动画效果

 

Dialog代码

package com.example.dialogtest01;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageButton;

public class MyDialog extends Dialog {
    private Context mContext;
    private ImageButton imageButtonCancel;
    private Button buttonConfirm;
    private String message;

    private MyOnclickListener mMyOnclickListener;

    public MyDialog( Context context) {
        super(context);
    }

    public MyDialog(Context context, int themeResId) {
        super(context, themeResId);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_item01);
        setCanceledOnTouchOutside(false);
        initView();
    }

    @Override
    public void show() {
        super.show();
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.width= 1040;
        layoutParams.height= 1200;
        layoutParams.gravity = Gravity.TOP | Gravity.LEFT;
        layoutParams.x=100;
        layoutParams.y=100;
        getWindow().getDecorView().setPadding(0, 0, 0, 0);
        getWindow().setAttributes(layoutParams);
    }


    private void initView(){
        imageButtonCancel=findViewById(R.id.imagebutton_cancel);
        buttonConfirm=findViewById(R.id.button_confirm);
        buttonConfirm.setText("自定义dialog");

        buttonConfirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                System.out.println("测试自定义dialog的按钮点击");
                mMyOnclickListener.onYesClick(message);
            }
        });
    }

//内部接口
    public interface MyOnclickListener{
        public void onYesClick(String message);
    }
//set内部接口和String参数
    public void setMyOnclickListener(String message,MyOnclickListener myOnclickListener){
        this.message=message;
        this.mMyOnclickListener=myOnclickListener;
    }
}

 

创建dialog代码

MyDialog myDialog=new MyDialog(MainActivity.this,R.style.Dialog_Msg);

myDialog.setMyOnclickListener("这是外部实现的点击事件", new             
             MyDialog.MyOnclickListener() {
                @Override
                public void onYesClick(String message) {
                    System.out.println("测试:"+message);
                }
            });

myDialog.show();

 

style代码

 

 

当然我们也可以搞dialog出现和消失的动画效果

res/values/styles:


    

animator_dialog_in 



    

animator_dialog_out 



    

 最后在自定义的dialog的show方法中设置我们的动画

Android 自定义dialog步骤_第1张图片

 

 

_________________________________________分割线_____________________________________

 

PopupWindow的用法请看我的另一篇博客

https://blog.csdn.net/yh18668197127/article/details/84985307

 

你可能感兴趣的:(Android自定义view)