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

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

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

非浮动的 浮动的

随笔7_第1张图片

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

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

protected Dialog onCreateDialog(int id) { Dialog dialog; switch(id) { case 1: dialog = 建立的对话框 break; case 2: dialog = 建立的对话框2 break; default: dialog = null; } return dialog; }

怎么让这些对话框显示出来呢? 在你的程序中(一般是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 的背景色设置为黑色的.

//隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); //设置背景为黑色 getWindow().setBackgroundDrawableResource(android.R.color.black);

看看效果

随笔7_第2张图片

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

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

更多相关文章

  1. [原创]通过代码及流程图说明Google在Android上的Push机制的实现
  2. Android读取文件方法总结
  3. Android中Intent传递对象的两种方法(Serializable,Parcelable)!
  4. Mac安装android studio后卡在building gradle project info的解
  5. appium 【已解决】Android,每次启动手机中都会安装Appium setting
  6. Android Studio xml android标签突然没有代码提示问题的解决
  7. android 图片压缩的几种方法
  8. Android SqLite中insert()方法解析

随机推荐

  1. 【译】Google官方推出的Android架构组件
  2. Android介绍
  3. Android源代码编译命令m/mm/mmm/make分析
  4. Android的Activity屏幕切换动画-左右滑动
  5. Android中shape的简单介绍
  6. android性能测试方法
  7. Android(安卓)修改开机动画(bootanimation
  8. Android使用MediaRecorder实现录音功能
  9. Android作为Socket服务器端
  10. android控件的对齐方式