今天说的是自定义对话框,我们在开发中最常用的对话框,虽然Android系统有对话框,然而我们的产品和美工,认为UI不是特好看,所以要自己设计,我所做的项目中很多都用到了对话框,所以我给封装了一个类,随调随用,方便,是开发的速度加快,
先看看我们的UI这只是一部分,你可以自己修改界面
关键代码如下:
/**
* 自定义dialog
*
* @param context
* @param theme
* 主题
* @param content
* 主体文字
* @param leftBtnText
* 左按钮文字,若为""则隐藏
* @param rightBtnText
* 右按钮文字,若为""则隐藏
* @param listener
* 回调接口
*/
public MyDialog(Context context, int theme, String content,
String leftBtnText, String rightBtnText,
DialogClickListener listener) {
super(context, theme);
this.context = context;
this.content = content;
this.leftBtnText = leftBtnText;
this.rightBtnText = rightBtnText;
this.listener = listener;
}
public void setTextSize(int size) {
dialog_textViewID.setTextSize(size);
dialog_textViewID1.setTextSize(size);
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.dialog);
tv_restinfo_pop_tel_content = (TextView) findViewById(R.id.tv_restinfo_pop_tel_content);
dialog_textViewID1 = (TextView) findViewById(R.id.dialog_textViewID1);
dialog_textViewID = (TextView) findViewById(R.id.dialog_textViewID);
dialog_textViewID.setOnClickListener(this);
dialog_textViewID1.setOnClickListener(this);
initView();
initDialog(context);
}
/**
* 设置dialog的宽为屏幕的3分之1
*
* @param context
*/
private void initDialog(Context context) {
// 使其点击界面其他位置不消失
setCanceledOnTouchOutside(false);
// 获取返回键使其失效
setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(DialogInterface dialog, int keyCode,
KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getRepeatCount() == 0) {
return true;
} else {
return false;
}
}
});
// 设置布局所占屏幕的大小,有利于适配
WindowManager windowManager = this.getWindow().getWindowManager();
Display display = windowManager.getDefaultDisplay();
WindowManager.LayoutParams lp = this.getWindow().getAttributes();
lp.width = (int) (display.getWidth() / 6 * 5); 设置宽度
this.getWindow().setAttributes(lp);
}
private void initView() {
tv_restinfo_pop_tel_content.setText(content);
// 判断输入的是否有值
if (leftBtnText.equals(""))
dialog_textViewID.setVisibility(View.GONE);
else
dialog_textViewID.setText(leftBtnText);
// 判断输入的是否有值
if (rightBtnText.equals(""))
dialog_textViewID1.setVisibility(View.GONE);
else
dialog_textViewID1.setText(rightBtnText);
}
//监听左右键的接口
public interface DialogClickListener {
void onLeftBtnClick(Dialog dialog);
void onRightBtnClick(Dialog dialog);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.dialog_textViewID:
listener.onLeftBtnClick(this);
break;
case R.id.dialog_textViewID1:
listener.onRightBtnClick(this);
break;
default:
break;
}
}
下载地址