标签:
OsChina在主界面底部导航处设置了快速操作的对话框,图示:
OsChina采用了Dialog的方式实现,有些人可能会用到popupwindow去实现。通过分析其实现原理,来学到对自己有用的东西。
1布局文件,dialog_quick_option.xml,布局代码不难
2自定义了对话框类QuickOptionDialog:
2.1在构造函数中加载了自定义的对话框的布局文件,初始化控件,完成了快速图片按钮的旋转动画(quick_option_close.xml)。此处觉得应该把这部分工作放到onCreate()当中去做。
2.2在onCreate()中设置对话框的宽度为屏幕的宽度。
WindowManager m = getWindow().getWindowManager();
Display d = m.getDefaultDisplay();
WindowManager.LayoutParams p = getWindow().getAttributes();
p.width = d.getWidth();
getWindow().setAttributes(p);
此处觉得,如果需要设置为屏幕宽度的几分之几的话,那么就可以照着这段代码去处理,但实际它还是屏幕的宽度,所以是不需要加这段代码的。
3代码中定义了一个接口,但是把设置监听器的方法注释掉,你会发现没有报错,说明其没有真正的用到设置监听器。
public interface OnQuickOptionformClick {
void onQuickOptionClick(int id);
}
那么,问题来了,我们什么时候可以这样子去处理呢? 按照接口命名的意思“谁点击的”?那么我们在主界面实例化对话框之后,QuickOptionDialog dialog = new QuickOptionDialog(MainActivity.this); 利用dialog设置下监听器即可,当对话框某控件发生点击事件时,可以回调告诉主界面完成相应的事件处理,比如界面跳转。
这样将对话框部分的代码完全提取出来进行重构,这样我们的代码就不会显得那么冗余了。以后就要这么干~~~
开源中国 OsChina Android 客户端源码分析(4)自定义对话框
标签:
原文地址:http://my.oschina.net/jixin/blog/417657