1. 程式人生 > >Android 日常封裝之暴力CustomViewDialog自定義對話方塊

Android 日常封裝之暴力CustomViewDialog自定義對話方塊

import android.app.Dialog;
import android.content.Context;
import android.support.annotation.LayoutRes;
import android.support.annotation.NonNull;
import android.support.annotation.StyleRes;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import com.xxx.xxx.R;
/** * @author Created by qlang on 2017/5/26. */ public class CustomViewDialog extends Dialog { public CustomViewDialog(@NonNull Context context, @StyleRes int themeResId) { super(context, themeResId); } /** * 例項一個對話方塊 * * @param context * @param layoutResID 佈局資源id
* @param cancelable 是否可以按返回鍵取消 * @param touchOutsideCancelable 是否可以點選外部取消 * @param listener 回撥 * @return */ public static CustomViewDialog newInstance(@NonNull Context context, @LayoutRes int layoutResID, boolean cancelable, boolean
touchOutsideCancelable, ViewCallBack listener) { View view = LayoutInflater.from(context).inflate(layoutResID, null); return newInstance(context, view, cancelable, touchOutsideCancelable, listener); } /** * 例項一個對話方塊 * * @param context * @param view view on your show * @param cancelable 是否可以按返回鍵取消 * @param touchOutsideCancelable 是否可以點選外部取消 * @param listener 回撥 * @return */ public static CustomViewDialog newInstance(@NonNull Context context, View view, boolean cancelable, boolean touchOutsideCancelable, final ViewCallBack listener) { CustomViewDialog dialog = new CustomViewDialog(context, R.style.CustomDialogTheme); dialog.setContentView(view); dialog.getWindow().getAttributes().gravity = Gravity.CENTER; dialog.setCanceledOnTouchOutside(touchOutsideCancelable); dialog.setCancelable(cancelable); if (listener != null) { listener.onCallBack(view, dialog); } return dialog; } public interface ViewCallBack { void onCallBack(View contentView, CustomViewDialog dialog); } }