接上文,此文将放出上文中使用的几个工具类。
package com.example.mylibrary.view.dialog; import android.app.Dialog; import android.content.Context; import android.support.annotation.ColorRes; import android.view.LayoutInflater; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import com.example.mylibrary.R; import com.example.mylibrary.utils.display.HnDimenUtil; public class CommDialog extends Dialog { public final static int ONE_STATE = 1; public final static int TWO_STATE = 2; public Context context; public TextView mTvContent, mTvLeft, mTvRight,mTvTitle; private int State = 1; private TwoSelDialog mTwoSelDialog; private OneSelDialog mOneSelDialog; private static CommDialog dialog; public static CommDialog getDialog() { return dialog; } public interface TwoSelDialog { default void leftClick(){dialog.dismiss();}; void rightClick(); } public interface OneSelDialog { void sureClick(); } public static CommDialog newInstance(Context context) { dialog = new CommDialog(context); return dialog; } public CommDialog(Context context) { super(context, R.style.PXDialog); this.context = context; this.State = TWO_STATE; init(); } public static CommDialog showDialog() { if (dialog != null) { dialog.show(); return dialog; } return dialog; } private void init() { LayoutInflater inflater = LayoutInflater.from(context); View view = inflater.inflate(R.layout.comm_dialog, null); setContentView(view); mTvContent = (TextView) findViewById(R.id.mTvTitle); mTvLeft = (TextView) findViewById(R.id.mTvLeft); mTvTitle = (TextView) findViewById(R.id.hint); mTvRight = (TextView) findViewById(R.id.mTvRight); Window dialogWindow = this.getWindow(); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width = HnDimenUtil.dp2px(context, 300); // 宽度 // lp.height = HnDimenUtil.dp2px(context, 170); // 高度 dialogWindow.setAttributes(lp); } //设置标题 public CommDialog setCanceledOnOutside(boolean isCancle) { if (dialog != null) { this.setCanceledOnTouchOutside(isCancle); return dialog; } return null; } //设置标题 public CommDialog setTitle(String title) { if (mTvTitle != null) { mTvTitle.setText(title); return dialog; } return null; } //设置内容 public CommDialog setContent(String content) { if (mTvContent != null) { mTvContent.setText(content); return dialog; } return null; } //设置左边文本 默认-取消 public CommDialog setLeftText(String leftText) { if (mTvLeft != null) { mTvLeft.setText(leftText); return dialog; } return null; } //设置右边文本 默认-确认 public CommDialog setLeftText(String rightText, @ColorRes int color) { if (mTvLeft != null) { mTvLeft.setText(rightText); mTvLeft.setTextColor(context.getResources().getColor(color)); return dialog; } return null; } //设置右边文本 默认-确认 public CommDialog setRightText(String rightText) { if (mTvRight != null) { mTvRight.setText(rightText); return dialog; } return null; } //设置右边文本 默认-确认 public CommDialog setRightText(String rightText, @ColorRes int color) { if (mTvRight != null) { mTvRight.setText(rightText); mTvRight.setTextColor(context.getResources().getColor(color)); return dialog; } return null; } public CommDialog setClickListen(final OneSelDialog mOneSelDialog) { this.mOneSelDialog = mOneSelDialog; this.State = ONE_STATE; mTvLeft.setVisibility(View.GONE); //确定 mTvRight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOneSelDialog != null) mOneSelDialog.sureClick(); if (CommDialog.this.isShowing()) CommDialog.this.dismiss(); } }); return dialog; } public CommDialog setClickListen(final TwoSelDialog mTwoSelDialog) { this.mTwoSelDialog = mTwoSelDialog; this.State = TWO_STATE; //取消 mTvLeft.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mTwoSelDialog != null) { mTwoSelDialog.leftClick(); } if (CommDialog.this.isShowing()) { CommDialog.this.dismiss(); } } }); //确定 mTvRight.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mTwoSelDialog != null) { mTwoSelDialog.rightClick(); } if (CommDialog.this.isShowing()) { CommDialog.this.dismiss(); } } }); return dialog; } }
布局文件:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dp" android:layout_height="wrap_content" xmlns:tools="http://schemas.android.com/tools" android:background="@drawable/shape_dialog"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:text="提示" android:id="@+id/hint" android:paddingLeft="@dimen/dimen_16" android:layout_marginTop="@dimen/dimen_16" android:textColor="@color/newThemeColor" android:paddingTop="@dimen/dimen_10" android:textStyle="bold" android:paddingBottom="@dimen/dimen_10" android:textSize="@dimen/sp_16" /> <TextView android:id="@+id/mTvTitle" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/hint" android:layout_marginRight="@dimen/dimen_16" android:paddingTop="8dp" android:paddingBottom="@dimen/dp_20" android:layout_marginLeft="@dimen/dimen_16" android:textColor="@color/common_title" android:textSize="16sp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/mTvTitle" android:layout_marginBottom="@dimen/dimen_16" android:gravity="right" android:orientation="horizontal"> <TextView android:id="@+id/mTvLeft" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:gravity="center" android:text="取消" android:textColor="@color/common_title" android:textSize="16sp" /> <TextView android:gravity="center" android:text="确定" tools:text="确定" android:layout_width="0dp" android:layout_weight="1" android:id="@+id/mTvRight" android:layout_height="wrap_content" android:textColor="@color/newThemeColor"/> </LinearLayout> </RelativeLayout>
style 样式文件:
<!--对话框样式--> <style name="PXDialog" parent="Theme.AppCompat.Light.Dialog"> <!-- 背景颜色--> <item name="android:windowBackground">@android:color/transparent</item> <!-- 无边框 --> <item name="android:windowFrame">@null</item> <!-- 没有标题 --> <item name="android:windowNoTitle">true</item> <!-- 背景是否半透明 --> <item name="android:windowIsTranslucent">true</item> <!-- 浮于Activity之上 --> <item name="android:windowIsFloating">true</item> </style>