Android全屏对话框(附带延时关闭效果)
16lz
2022-05-29
自定义style,设置全屏属性
[html] view plain copy print ?
- <resources>
- <stylename="AppTheme"parent="android:Theme.Black"/>
- <stylename="processDialog">
- <itemname="android:windowIsFloating">true</item><!--是否浮现在activity之上-->
- <itemname="android:windowFullscreen">true</item>
- <itemname="android:windowIsTranslucent">false</item><!--半透明-->
- <itemname="android:windowNoTitle">true</item><!--无标题-->
- <itemname="android:windowBackground">@android:color/transparent</item><!--背景透明-->
- <itemname="android:backgroundDimEnabled">true</item><!--模糊-->
- <itemname="android:backgroundDimAmount">0.5</item>
- <itemname="android:alpha">0.3</item>
- </style>
- </resources>
代码中加载这个view并把view set到dialog上,这样全屏的dialog就完成了
[java] view plain copy print ?
- <spanstyle="white-space:pre"></span>mView=LayoutInflater.from(this).inflate(R.layout.process_dialog,null);
- processDialog=newDialog(LogActivity.this,R.style.processDialog);
- processDialog.setCancelable(false);
- processDialog.setContentView(mView);
- <spanstyle="white-space:pre"></span>mAutoCloseDialog=newAutoCloseDialog(processDialog);
- <spanstyle="white-space:pre"></span>mAutoCloseDialog.show(Prefs.DIALOG_DISPLAY_TIME);
接下来用一个封装好的类,做一个延时关闭的效果
[java] view plain copy print ?
- importjava.util.concurrent.Executors;
- importjava.util.concurrent.ScheduledExecutorService;
- importjava.util.concurrent.TimeUnit;
- importandroid.app.Dialog;
- publicclassAutoCloseDialog{
- privateDialogdialog;
- privateScheduledExecutorServiceexecutor=Executors.newSingleThreadScheduledExecutor();
- publicAutoCloseDialog(Dialogdialog){
- this.dialog=dialog;
- }
- publicvoidshow(longduration){
- Runnablerunner=newRunnable(){
- publicvoidrun(){
- dialog.dismiss();
- }
- };
- executor.schedule(runner,duration,TimeUnit.MILLISECONDS);
- dialog.show();
- }
- }
更多相关文章
- Android(安卓)属性动画中心点无限循环
- Android之View的视图测量过程
- Android(安卓)自定义文本框(带图片)
- android 状态栏与标题栏一体化
- ListView 滑动出现黑色边际问题
- RelativeLayoutd 的属性
- ADT-abundle-使用过程中不断出现的错误
- AndroidManifest.xml文件详解(supports-screens)
- 出错:PhoneFactory.getDefaultPhone must be called from Looper