Android全屏对话框(附带延时关闭效果)

自定义style,设置全屏属性

[html]  view plain copy print ?
  1. <resources>  
  2.   
  3.     <style name="AppTheme" parent="android:Theme.Black"/>  
  4.     <style name="processDialog" >  
  5.         <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上-->   
  6.         <item name="android:windowFullscreen">true</item>    
  7.         <item name="android:windowIsTranslucent">false</item><!--半透明-->    
  8.         <item name="android:windowNoTitle">true</item><!--无标题-->    
  9.         <item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->    
  10.         <item name="android:backgroundDimEnabled">true</item><!--模糊-->    
  11.         <item name="android:backgroundDimAmount">0.5</item>   
  12.         <item name="android:alpha">0.3</item>   
  13.     </style>    
  14.   
  15. </resources>  


代码中加载这个view并把view set到dialog上,这样全屏的dialog就完成了

[java]  view plain copy print ?
  1. <span style="white-space:pre">  </span>mView = LayoutInflater.from(this).inflate(R.layout.process_dialog, null);    
  2.     processDialog = new Dialog(LogActivity.this, R.style.processDialog);    
  3.     processDialog.setCancelable(false);  
  4.     processDialog.setContentView(mView);    
  5. <span style="white-space:pre">  </span>mAutoCloseDialog = new AutoCloseDialog(processDialog);  
  6. <span style="white-space:pre">  </span>mAutoCloseDialog.show(Prefs.DIALOG_DISPLAY_TIME);  

接下来用一个封装好的类,做一个延时关闭的效果

[java]  view plain copy print ?
  1. import java.util.concurrent.Executors;  
  2. import java.util.concurrent.ScheduledExecutorService;  
  3. import java.util.concurrent.TimeUnit;  
  4.   
  5.   
  6. import android.app.Dialog;  
  7.   
  8. public class AutoCloseDialog{    
  9.       
  10.     private Dialog dialog;    
  11.     private ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();    
  12.         
  13.     public AutoCloseDialog(Dialog dialog){    
  14.         this.dialog = dialog;    
  15.     }    
  16.         
  17.     public void show(long duration){    
  18.           
  19.         Runnable runner = new Runnable() {    
  20.             public void run() {    
  21.                 dialog.dismiss();    
  22.             }    
  23.         };    
  24.         executor.schedule(runner, duration, TimeUnit.MILLISECONDS);  
  25.         dialog.show();  
  26.     }    
  27.         
  28. }   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值