开源中国 OsChina Android 客户端源码分析(4)自定义对话框

OsChina在主界面底部导航处设置了快速操作的对话框,图示:

     131439_Kz0o_163141.png

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设置下监听器即可,当对话框某控件发生点击事件时,可以回调告诉主界面完成相应的事件处理,比如界面跳转。

        这样将对话框部分的代码完全提取出来进行重构,这样我们的代码就不会显得那么冗余了。以后就要这么干~~~


转载于:https://my.oschina.net/jixin/blog/417657

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值