Android开发:自定义界面的Dialog,并且实现按钮的监听回调
来源:互联网 发布:苏州市网络安全教育 编辑:程序博客网 时间:2024/05/17 20:26
该项目适合想实现自定义dialog,有懒得折腾的人。
在安卓开发的时候,往往会碰到一些特别漂亮的dialog,比如这个图片的:
很多这种类型的dialog,界面千变万化,于是我建立了一个通用自定义dialog,可以实现以下功能:
1、界面的自定义,全部自己用xml定义界面;
2、不管是在Fragment,还是Activity都可以实例化该dialog,并且实现dialog按钮的监听回调;
3、在dialog按钮点击后,自动消失。
当然,先看下效果图:
界面很丑,因为不同的项目,对于界面的需求会不同,完全可以通过xml自定义,所以界面就没有做优化了,但是功能杠杆的,适合想实现自定义dialog,有懒得折腾的人;
好,首先附上自定义dialog的代码,由于代码比较简单,我就全部附上来了
public class MyDialogFragment extends DialogFragment{private int mNum;private OnDialogButtonClickListener buttonClickListner;static MyDialogFragment newInstance(int num) { MyDialogFragment f = new MyDialogFragment(); Bundle args = new Bundle(); args.putInt("num", num); f.setArguments(args); return f; }//实现回调功能public interface OnDialogButtonClickListener {public void okButtonClick();public void cancelButtonClick();}@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// mNum = getArguments().getInt("num"); int style = DialogFragment.STYLE_NORMAL, theme = 0; switch (2) { case 1: style = DialogFragment.STYLE_NO_TITLE; break; case 2: style = DialogFragment.STYLE_NO_FRAME; break; case 3: style = DialogFragment.STYLE_NO_INPUT; break; case 4: style = DialogFragment.STYLE_NORMAL; break; case 5: style = DialogFragment.STYLE_NORMAL; break; case 6: style = DialogFragment.STYLE_NO_TITLE; break; case 7: style = DialogFragment.STYLE_NO_FRAME; break; case 8: style = DialogFragment.STYLE_NORMAL; break; } switch (5) { case 4: theme = android.R.style.Theme_Holo; break; case 5: theme = android.R.style.Theme_Holo_Light_Dialog; break; case 6: theme = android.R.style.Theme_Holo_Light; break; case 7: theme = android.R.style.Theme_Holo_Light_Panel; break; case 8: theme = android.R.style.Theme_Holo_Light; break; } setStyle(style, theme); }@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_dialog, container, false); Button button = (Button)v.findViewById(R.id.btn_ok); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { buttonClickListner.okButtonClick(); getDialog().dismiss(); } }); v.findViewById(R.id.btn_cancel).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {buttonClickListner.cancelButtonClick();getDialog().dismiss();}}); return v; }public void setOnButtonClickListener(OnDialogButtonClickListener listener) {this.buttonClickListner = listener;}}
里面有一些多余的代码,比如newInstance先留着,难免以后用得到,代码中是继承了dialogfragment,然后自定义layout,用interface实现按钮的点击监听,获取点击事件的代码如下:
MyDialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel); newFragment.show(ft, "dialog"); newFragment.setOnButtonClickListener(new OnDialogButtonClickListener() {@Overridepublic void okButtonClick() {Log.i("debug", "ok button click");}@Overridepublic void cancelButtonClick() {Log.i("debug", "cancel button click");}});
这样的话,既可以自定义dialog,有可以获取dialog的点击事件,以后再碰到特殊界面的dialog,就再也不用担心了
源代码
0 0
- Android开发:自定义界面的Dialog,并且实现按钮的监听回调
- Android界面之----自定义的Dialog,然后利用回调方法,在调用处,进行Dialog中各按钮的事件处理。
- 【Android界面实现】关于自定义Dialog的那些事
- Android自定义Dialog--DanmakuFlame弹幕发送框界面的实现
- android 自定义带关闭按钮的dialog
- android自定义三个按钮的dialog对话框
- Android中的自定义界面的Dialog
- 【Android自定义控件】聊天界面录音按钮的实现
- 【Android自定义控件】聊天界面录音按钮的实现
- Android 自定义Dialog的实现
- Android的按钮监听事件&自定义回调函数
- Android 自定义Dialog类,并在Activity中实现按钮监听事件
- Android自定义Dialog类,并在Activity中实现按钮监听
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之自定义dialog的实现(源代码分享)
- Android开发之自定义无背景Dialog的实现
- Android自定义Dialog带分隔的8位输入框按钮回调输入值
- Yii框架中的rules中的验证规则场景,'on'=>'search'表示什么?
- ShellExecute函数返回值含义
- Oracle 包的使用
- (转)linux shell的特殊符号
- 标签自动排列 笔记
- Android开发:自定义界面的Dialog,并且实现按钮的监听回调
- slf4j结合log4j配置日志系统
- MFC中显示图像的类CImage
- PHP和JAVASCRIPT判断访客终端是电脑还是手机
- sqlite 数据类型
- ZStack--建立自己的应用程序(API)转载
- 城市选择控件文本框【纯javascript打造】兼容IE6以及以上、谷歌、Firefox
- SMP IRQ Affinity
- linux 3.10 busybox initramfs构建 qemu调试