素材巴巴 > 程序开发 >

android ui定义自己的dialog(项目框架搭建时就写好,之后事半功倍)

程序开发 2023-09-10 14:26:59

自定义一个dialog:

之前有很多博客都有过这方面的介绍,可是个人觉得通常不是很全面,通用性不是很强,一般会定义一个自己的dialog类,然后去使用,难道每一个dialog都要定义一个class吗??

首先:dialog一般包含一个标题部分,内容部分,按钮部分,风格部分。progressdialog则多一个进度条

那么我们就不妨写一个dialog类,在构造方法中,我们把标题,内容,按钮信息都给他,然后可以show出来

然后,在构造方法中添加一个接口,接口中使用确定,取消等等的按钮的回调。


那么开始咯:

第一步定义一个自己的dialog类

import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.Bundle;
 import android.view.View;
 import android.widget.Button;
 import android.widget.TextView;import com.easipass.R;public class CustormDialog extends Dialog implements DialogInterface {private String title;private String content;private DialogCallBack callback;private int index;/**** @param context* @param title 对话框标题* @param content 对话框内容* @param theme 对应的style 这里为R.style.CustomDialog_1 可自定义style* @param dialogcallback 确定取消按钮的回调 分别是 onCancle onOk* @param index 显示几个button 1 为只有一个确定键,其他为有确定取消两个按钮* * 调用实例 * 	    dialog = new CustormDialog(SettingsActivity.this,"缓存清理",* 		"点击确定为您清理以下历史信息:n系统通知,提箱小票,行业资讯,装箱单录入", R.style.CustomDialog_1,*		new DialogCallBack(){*			@Override*			public void OkDown() {   *           	dialog.dismiss();*           //这里放 确定按钮响应*			}*			@Override*			public void CancleDown() {*           	dialog.dismiss();	*            //这里放取消按钮响应				*			} },2);*/public CustormDialog(Context context,String title,String content,int theme,DialogCallBack dialogcallback,int index) {super(context, theme);this.title = title;this.content = content;this.callback = dialogcallback;this.index = index;}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dg_custormdialog);TextView titl = (TextView) findViewById(R.id.title);TextView cont = (TextView) findViewById(R.id.tv_content);  titl.setText(title);cont.setText(content);Button cancel = (Button) findViewById(R.id.cancel);Button ok = (Button) findViewById(R.id.sure);if(index == 1){cancel.setVisibility(View.GONE);}else{cancel.setOnClickListener(new android.view.View.OnClickListener() {public void onClick(View v) {               	CustormDialog.this.dismiss();callback.CancleDown();}});}ok.setOnClickListener(new android.view.View.OnClickListener() {@Overridepublic void onClick(View v) {CustormDialog.this.dismiss();callback.OkDown();}});}}

这个类中实现了接口 DialogCallBack

再定义下这个回调:

public interface DialogCallBack {abstract void OkDown();abstract void CancleDown(); 
 }

初步的框架就有了

接下来我们把布局写一下(当然框架在那,布局完全自己发挥就好了)


 
 
 

系统自带的style通常让我们受不鸟,它有一个白色边框,等等,那我们最好定义一个自己的style


一切顺利的话,我们尝试一下哦

	    dialog = new CustormDialog(SettingsActivity.this,"放标题","放内容", R.style.CustomDialog_1,new DialogCallBack(){@Overridepublic void OkDown() {		                   dialog.dismiss();}@Overridepublic void CancleDown() {dialog.dismiss();					}},2);

这里的 2是显示 确定 取消 两个按钮,如果填写1,那就只有确定按钮

自己发挥咯


个人布局的比较丑啦,相信大家比俺文艺很多


有了这一个类,以后有确定取消按钮,以及只有确定按钮的对话框都搞定啦

ps,如果还要一次性搞定progressdialog,那就用一个帧布局,就好了,给构造添加一个参数,废话不多说了,相信大家也没有这么笨的,举一反三啦





标签:

上一篇: 如何使用本地mock数据 下一篇:
素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。