自定义弹出对话框

来源:互联网 发布:纽约大学石溪分校知乎 编辑:程序博客网 时间:2024/04/30 08:50

今天说的是自定义对话框,我们在开发中最常用的对话框,虽然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);};@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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() {@Overridepublic 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);elsedialog_textViewID.setText(leftBtnText);//判断输入的是否有值if (rightBtnText.equals(""))dialog_textViewID1.setVisibility(View.GONE);elsedialog_textViewID1.setText(rightBtnText);}//监听左右键的接口public interface DialogClickListener {void onLeftBtnClick(Dialog dialog);void onRightBtnClick(Dialog dialog);}@Overridepublic 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;}}
下载地址


0 0