您的位置:首页 > 移动开发 > Android开发

Android 日常封装之暴力CustomViewDialog自定义对话框

2018-02-09 10:53 423 查看
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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: