透明对话框(用于更新下载)
最近使用到了app跟新下载的功能,一般的做法是后台起service检测有没有最新版,然后再通知栏显示更新提示,点击下载。不过为了节省时间,我直接在启动app的时候check了一下,然后以dialog的形式提醒用户更新下载了。这个时候,这个更新下载的对话框的样子貌似就需要一点重视了,所以自定义了一下。效果图如下:
首先是dialog的style.mydialogthemes.xml:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="dialog" parent="@android:style/Theme.Dialog"> <!-- 该view所对应的前景frontground图片,我们不希望遮挡了background,所以设置为null <item name="android:windowFrame">@drawable/updatebodybg</item> --> <item name="android:windowFrame">@null</item> <!-- 是否浮现在activity之上,false的话就会铺满整个屏幕了--> <item name="android:windowIsFloating">true</item> <!-- 半透明 不过这里我试了一下,true和false好像没看出区别,不知道是不是因为背景使用了透明--> <item name="android:windowIsTranslucent">true</item> <!-- 是否无标题 --> <item name="android:windowNoTitle">false</item> <!-- 标题栏风格 ,自定义了一下--> <item name="android:windowTitleStyle">@style/PauseDialogTitle</item> <!-- 背景 这里采用自定义的带透明通道的drawable --> <item name="android:windowBackground">@drawable/filled_box</item> <!-- 是否设置背景模糊 ,true的时候android:backgroundDimAmount值生效--> <item name="android:backgroundDimEnabled">false</item> <item name="android:backgroundDimAmount">1</item> </style> <style name="PauseDialogTitle" parent="@android:style/TextAppearance.DialogWindowTitle"> <!-- 内容水平居中 --> <item name="android:gravity">center_horizontal</item> </style> </resources>
然后主要的就是这个背景,filled_box.xml:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 用带透明通道的颜色填充背景 --> <solid android:color="#99000000"/> <!-- 描边 --> <stroke android:width="3dp" android:color="#553D3D3D"/> <!-- 设置圆角 --> <corners android:radius="30dp" /> <!-- 设置内边距 --> <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> </shape>
关于这里的shape在另外一篇已经详细的解释了一下,可以去看看。http://www.cnblogs.com/tangchd/p/3459109.html