转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23116115

Android中可用于实现对话框的有Dialog,PopupWindow,Activity。

下面简单介绍下,Dialog比较方便,但是显示位置比较固定,有时不能满足我们的需求。

例子:(消除了背景)

[html] view plain copy
  1. <resources>
  2. <stylename="dialog"parent="@android:style/Theme.Dialog">
  3. <itemname="android:windowFrame">@null</item>
  4. <itemname="android:windowIsFloating">true</item>
  5. <itemname="android:windowIsTranslucent">false</item>
  6. <itemname="android:windowNoTitle">true</item>
  7. <itemname="android:background">@android:color/black</item>
  8. <itemname="android:windowBackground">@null</item>
  9. <itemname="android:backgroundDimEnabled">false</item>
  10. </style>
  11. </resources>
[java] view plain copy
  1. Dialogdialog=newDialog(SetActivity.this,R.style.dialog);
  2. dialog.setContentView(R.layout.test);
  3. dialog.show();

PopupWindow可以通过showAtLocation设置显示位置,也可以通过ShowAsDropDown显示在某个View的相对位置,基本能满足我们的需求了。

下面介绍使用Activity作为弹出对话框,个人觉得好处有以下:

1、显示位置的设置,直接就是一个layout.xml随心所遇的感觉,可以实现在任何位置。

2、对对话框内控件的事件的处理,都独立出来在一个类中,调用的地方仅需要startActivity()就可以,这样可以使代码结构上更加清晰。

下面我们实现这个一个例子:

1、Activity的布局文件

[html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. >
  6. <LinearLayout
  7. android:onClick="tip"
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:layout_alignParentRight="true"
  11. android:layout_alignParentTop="true"
  12. android:layout_marginTop="46dp"
  13. android:background="@drawable/title_function_bg"
  14. android:orientation="vertical">
  15. <TextView
  16. android:layout_width="fill_parent"
  17. android:layout_height="wrap_content"
  18. android:layout_marginTop="10dp"
  19. android:drawableLeft="@drawable/mm_title_btn_compose_normal"
  20. android:paddingLeft="10dp"
  21. android:paddingRight="10dp"
  22. android:text="发起聊天"
  23. android:textColor="#fff"
  24. android:textSize="20sp"/>
  25. <TextView
  26. android:layout_width="fill_parent"
  27. android:layout_height="wrap_content"
  28. android:layout_marginTop="10dp"
  29. android:drawableLeft="@drawable/mm_title_btn_keyboard_normal"
  30. android:paddingLeft="10dp"
  31. android:paddingRight="10dp"
  32. android:text="登录网页版"
  33. android:textColor="#fff"
  34. android:textSize="20sp"/>
  35. <TextView
  36. android:layout_width="fill_parent"
  37. android:layout_height="wrap_content"
  38. android:layout_marginTop="10dp"
  39. android:drawableLeft="@drawable/mm_title_btn_qrcode_normal"
  40. android:paddingLeft="10dp"
  41. android:paddingRight="10dp"
  42. android:text="扫一扫"
  43. android:textColor="#fff"
  44. android:textSize="20sp"/>
  45. <TextView
  46. android:layout_width="fill_parent"
  47. android:layout_height="wrap_content"
  48. android:layout_marginBottom="10dp"
  49. android:layout_marginTop="10dp"
  50. android:drawableLeft="@drawable/mm_title_btn_receiver_normal"
  51. android:paddingLeft="10dp"
  52. android:paddingRight="10dp"
  53. android:text="听筒模式"
  54. android:textColor="#fff"
  55. android:textSize="20sp"/>
  56. </LinearLayout>
  57. </RelativeLayout>

2、在style.xml中定义一个theme(背景透明,无标题,动画效果),一般Activity默认动画效果右进右出,我们可以覆盖。

[html] view plain copy
  1. <stylename="MyDialogTopRight">
  2. <itemname="android:windowBackground">@android:color/transparent</item>
  3. <itemname="android:windowIsTranslucent">true</item>
  4. <itemname="android:windowNoTitle">true</item>
  5. <itemname="android:windowAnimationStyle">@style/Anim_scale</item>
  6. </style>
动画效果:

[html] view plain copy
  1. <stylename="Anim_scale"parent="@android:style/Animation.Activity">
  2. <itemname="android:activityOpenEnterAnimation">@anim/scale_in</item>
  3. <itemname="android:activityOpenExitAnimation">@anim/scale_out</item>
  4. <itemname="android:activityCloseEnterAnimation">@anim/scale_in</item>
  5. <itemname="android:activityCloseExitAnimation">@anim/scale_out</item>
  6. </style>

3、在需要使用的地方直接startActity()就可以了

[java] view plain copy
  1. Intentintent=newIntent(context,MainWeixinTitleRightActivity.class);
  2. startActivity(intent);


最终效果:




源码下载,点击这里

更多相关文章

  1. 关于如何实现android状态栏沉淀式效果
  2. Android(安卓)快速实现状态栏透明样式
  3. Android(安卓)SeekBar控件
  4. EditText可编辑状态和不可编辑状态切换 及其它特殊效果
  5. 关于overridePendingTransition效果在1.6版本中会出现VerifyErro
  6. Android开发小技巧之对android颜色渐变(Gradient )的改进
  7. (笔记)RecyclerView item按下变色效果 没有生效
  8. Android(安卓)Toast 用法总结
  9. android opengles 实现翻牌效果

随机推荐

  1. Android应用程序启动过程源代码分析(1)
  2. android读取keystore证书文件
  3. 分析脚本文件AndroidInitProcess分析心得
  4. Android(安卓)TextView显示文字过长时添
  5. 转贴 Android(安卓)开发之旅:又见Hello Wo
  6. android学习笔记(7)AbsoluteLayout+Frame
  7. android的四层体系结构,基于mvc三层结构浅
  8. Android(安卓)滑动侧边栏(Sliding Menu)第
  9. Android(安卓)Property System | Android
  10. Android图片转换