随笔7

  • 说实话, 浮动Activity 和 Activity 托管对话框, 我一开始是混淆了, 我以为实现浮动Activity <activity ....  android:theme="@android:style/Theme.Dialog" > 既要加上红色字体比分, 还要再覆盖 onCreateDialog() 方法.

 

       其实两者是不同方面的东西!

  • 浮动Activity 就是在<activity> 里面添加属性 android:theme="@android:style/Theme.Dialog", 图片对比一下效果:

非浮动的                                                                             浮动的

 

  • Activity 托管对话框, 在Activity 类中, 提供了一个 onCreateDialog(int id) 的地方给你统一地建立对话框. 这样做有好处的, 能让代码更规范(不规范的代码害死人的), 而不会这里一片代码建立一个对话框, 那里又一片代码建立一个对话框, 搞得代码很凌乱.

      你建立一个对话框, 不够的话, 你可以建立多个对话框, 通过switch 不同的id 建立对应的对话框.

 

      怎么让这些对话框显示出来呢? 在你的程序中(一般是onCreate()方法里面)调用 showDialog(1), 如果是第一次调用, 第一个对话框将被创建, 并且显示; 如果非第一次调用, 那只执行显示第一个对话框的操作. 同样地, showDialog(2) 显示第二个对话框. 

 

      在 onCreateDialog(int id) 方法里面的时候, 参数id 还不能作为对话框的标识, 只有在调用了showDialog(int id) 以后, 参数id 才有实际的标识对话框的作用, 如 showDialog(2), 以后你就可以调用 dismissDialog(2) 来关闭对话框一, 不然就会出现异常.  

 

      对了, 在对话框显示前, 还有一个回调方法 onPrepareDialog(int id, Dialog dialog), 如果有创建对话框的过程, 这个方法在创建对话框之后, 显示对话框之前调用.

 

      在Activity 类中, 关闭托管对话框的方法是dismissDialog(int id), 注销托管对话框的方法是 removeDialog(int id).

 

  • 在实际应用中, 可能某个对话框就是一个业务模块或功能模块, 我不想它默默无闻的放在代码堆里面, 并且我想通过 startActivity() 或 startActivityForResult() 的方式来启动这个对话框, 怎么办呢? 或者, 浮动的Activity 你想做得很像对话框的样式, 那要耗很多功夫的, 直接用对话框不就好了吗?

     把浮动和托管结合, 会是什么情况呢? 我前面因为不清楚它们的作用, 就把它们搞在一起, 想想已经写出来的东西不用太可惜了! 所以有上面的想法.

 

     结合的过程倒是不难, 但是还是有一个地方要注意的, 那就是开了一个对话框, 但是原来浮动的Activity 界面还是在的, 并且看得到的. 怎么办呢? 第一, 我们把浮动Activity 的标题栏去掉; 看看效果, 啊! 后面还有个白边框框, 怎么办呢? 第二, 把浮动Activity 的背景色设置为黑色的.

看看效果

 

      当然这样做也有不好的地方, 当你关闭对话框后, 你还必须调用 finish() 关闭 Activity, 并且要重写返回键事件, 并且要把这 浮动Activity 注册到 AndroidManifest.xml 中 , 嘿嘿, 这个对话框的地位貌似提高了呢, 跟组件并排了.

 

      完工后, startActivity() 试试......

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值