打造万能的对话框Dialog(二)
不要问我为什么就这么点破东西分两篇来写,但是我会告诉你还有第三篇的,哈哈哈:
- 就是一个简单封装,同上篇,但是你会发现太好用了,妈妈再也不用担心我以后的对话框了
首先回顾一下上篇
不说话,先贴图
实现这个方式其实很简单
1、写布局
2、在dialog中设置布局
3、设置dialog的方法
详情打造万能的对话框Dialog(一)
封装的实现
简单封装
public class DialogUtils {
/**
* 设置默认位置
*/
private static int GRAVITY_POSITION = Gravity.CENTER;
/**
* 设置底部弹出动画,为了保留上一次的东西
*/
private static int ANIMSTYLE = R.style.main_menu_animstyle;
/**
* 设置默认的高度
*/
private static int hight = ViewGroup.LayoutParams.WRAP_CONTENT;
/**
* 设置默认的宽度
*/
private static int Width = ViewGroup.LayoutParams.WRAP_CONTENT;
public static Dialog getDialog(Context context,int LayoutId){
return getDialog(context,LayoutId,GRAVITY_POSITION,0,hight,Width);
}
public static Dialog getDialog(Context context,int LayoutId,int animstyle){
return getDialog(context,LayoutId,GRAVITY_POSITION,animstyle,hight,Width);
}
public static Dialog getDialog(Context context,int LayoutId,int position,int animstyle,int
hight,int Width){
Dialog dialog = new Dialog(context, R.style.DialogTheme);
View view = View.inflate(context,LayoutId,null);
dialog.setContentView(view);
Window window = dialog.getWindow();
window.setWindowAnimations(animstyle);
window.setGravity(position);
window.setLayout(Width,hight);
dialog.show();
return dialog;
}
}
使用
传入上下文和布局即可实现仿IOS的圆角的对话框
DialogUtils.getDialog(MainActivity.this,R.layout.dialog_center);
总结
可能有些人看到这篇文章会觉得,这也叫封装?布局还得自己写,太麻烦了。而我觉得这才是真正实现了谷歌一直崇尚的MVC设计模式。布局独立开来。这样会最大限度的降低耦合度。求同存异嘛,至少我更喜欢这种布局和代码独立开来的方式。