Android 自定义简单的Dialog封装使用(DialogPlus)【记录.求教指正】

Dialogplus:

1.Dialogplus是一个非常简单易用的Dialog对话框控件;

2.Dialogplus是通过DecorView进行插入,是一个阻塞式的窗口;

3.Dialogplus是可定制的;

一个简单的dialog制作过程,才疏学浅,皮薄馅儿少,望指正:
emmm.....

大概样子(摸鱼时间做的,丑的亚皮,大家可以自定义样子....QAQ)

第一步,添加依赖:

在[build.gradle(:app)]中添加:

implementation 'com.orhanobut:dialogplus:1.11@aar'

添加成功后:

第二步:

把点击界面做一下,

xml代码(一切从简,摸鱼中...):

因为项目使用的弹窗较多切样式不同,我就把自定义的dialog封装在一个DialogManage中使用,适合多中弹窗跳出使用:

下面是dialog的xml代码

下面是MainActivity的实现逻辑,简单的逻辑,点击,跳出弹窗:

Demo代码(整个):

MainActivity:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
	private Context mcontext;
	private TextView dialog_button;
	private DialogPlus dialog_test;

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

	private void initView() {
		mcontext = this;
		dialog_button = (TextView) findViewById(R.id.dialog_button);
		dialog_button.setOnClickListener(this);
		dialog_test = DialogManage.getDialogManage().dialogPlus(mcontext,//Context
				DialogManage.DIALOG_TYPE_NEWTEST,//标记
				new ViewHolder(R.layout.dialog_test),//layout视图
				Gravity.CENTER);//居中
	}

	@Override
	public void onClick(View view) {
		switch (view.getId()) {
			case R.id.dialog_button:
				dialog_test.show();
				break;
			default:
				break;
		}
	}
}

activity_main:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/dialog_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="点我起飞"
        android:textSize="25sp"
        android:layout_centerInParent="true"/>

</RelativeLayout>

DialogManage:

public class DialogManage {
	public static final int DIALOG_TYPE_NEWTEST = 0;//简单测试dialog,
	//	有需求可继续添加标记,比如:
	public static final int DIALOG_TYPE_SECONDTEST = 1;//我是第二个dialog
	private static DialogManage dialogManage;
	private DialogPlus dialogPlus;
	private Context mContext;

	public static DialogManage getDialogManage() {
		if (dialogManage == null) {
			dialogManage = new DialogManage();
		}
		return dialogManage;
	}
	public DialogPlus dialogPlus(Context context, int dialogType, Holder holder, int gravity) {
		mContext = context;
		DialogPlusBuilder dialogPlusBuilder = DialogPlus.newDialog(mContext);
		dialogPlusBuilder.setContentHolder(holder);
		dialogPlusBuilder.setGravity(gravity);
		switch (dialogType) {
			case DIALOG_TYPE_NEWTEST:
				initTestDialog(dialogPlusBuilder);
				break;
			case DIALOG_TYPE_SECONDTEST:

				break;
			default:
				break;
		}
		return dialogPlus;
	}
	private void initTestDialog(DialogPlusBuilder dialogPlusBuilder) {
		dialogPlusBuilder.setCancelable(false);
		dialogPlusBuilder.setContentWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
		dialogPlusBuilder.setContentHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
		dialogPlusBuilder.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(DialogPlus dialog, View view) {
				switch (view.getId()) {
					case R.id.dialog_close:
						dialog.dismiss();
						break;
					default:
						break;
				}
			}
		});
		dialogPlus = dialogPlusBuilder.create();
	}
}

dialog_test:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="200dp">
<!--    适配的话,有时间再做,先就固定宽高了哈,懒惰-->
    <TextView
        android:id="@+id/text_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="我是一个弹窗"
        android:textSize="20sp"/>

    <Button
        android:id="@+id/dialog_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text_dialog"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="点我消失"/>
</RelativeLayout>

摸鱼时间堆一下,第一次写CSDN,望指教:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值