透明对话框(用于更新下载)

  最近使用到了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

 

 

 

源码下载

posted @ 2013-12-05 20:29  攀爬的小蚂蚁  阅读(196)  评论(0编辑  收藏  举报