当前位置:   article > 正文

用Activity实现对话框效果_实现一个关于样式的activity展示

实现一个关于样式的activity展示

大家在做弹出对话框效果的时候最容易想到的是用Dialog显示

弹出对话框的实现效果有两种

  • Dialog
  • Activity

网上各种各样实现Dialog的方式有很多,他们还加了很多的特技,比如动画啥的
(但是今天实现的是用Activity显示对话框的样式)

用Dialog显示一个对话框(演示效果) 点击空白处Dialog消失,必须要再次点击弹出按钮才能再次弹出对话框
这里写图片描述

Activity实现对话框的方法,可以在没有按钮的时候也弹出对话框,且如果点击了空白,对话框依旧可以显示(演示效果)

这里写图片描述

这个的动态图的意思是,我的界面没有任何弹出对话框的按钮,在程序开启两秒之后弹出一个对话框,当我点击屏幕空白的地方对话框关闭,并在两秒之后对话框再次显示

这个效果肯定是可以用Dialog实现的,但是我认为使用Activtiy会更加简单

难点:在用户点击空白后(DialogActivity被覆盖,初始Activity再次显示),过两秒钟显示对话框(在没有Button的情况下)

突破点:要监听Activity的周期,点击空白后当初始Activity重新被显示的两秒钟之后弹出对话框

实现步骤:

将一个Activity做成对话框形式 就叫DialogActivity
初始Ativity两秒之后显示DialogActivity
用户点击空白处(DialogActivity为关闭状态) 过两秒之后再次弹出对话框

将一个Activity呈Dialog显示
1.首先要将这个xml设计出来,也就是对话框显示的样子

此处省略代码……

2.设置Activty样式为Dialog

清单文件

选择要显示成Dialog的activity标签

设置 theme 属性

一般设置成Dialog样式都会带有Dialog字样

android:theme=”@android:style/Theme.DeviceDefault.Dialog.NoActionBar.MinWidth”

这样就大功告成了

显示初始Activity的两秒之后,显示DialogActivity

1.两秒的计时我是用的 Timer 类,在两秒钟之后跳转到DialogActivty界面
这个方法的使用,因为要不断显示弹出对话框,所以用while循环

while(true){
mTimer = new Timer();
 mTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                        //跳转到界面
                        Intent intent = new Intent(WelcomeActivity.this, DialogActivty.class);
                        startActivity(intent);
                    }
            }, 2000);
            }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

这里写图片描述

这样两秒跳转的功能就完成了

用户点击空白处(DialogActivity自动关闭) 过两秒之后再次弹出对话框

那这个方法在哪里调用的呢?是在onCreate()中调用吗??

试想一下,当用户点击空白处DialogActiviy消失,继续显示到初始Activity,这个时候还会再调用初始Activity的onCreate()方法吗
答案是不会,再次显示的时候会调用onResume()方法

而一开始显示初始界面的时候也会调用onResume()方法

那这样就把显示(跳转)DialogActivity的方法放到onResume()中

    @Override
    protected void onResume() {
        super.onResume();
        showDia();
    }
  • 1
  • 2
  • 3
  • 4
  • 5

这样的话就实现了用Activity显示Dialog样式,并根据Activity的生命周期显示DialogActivity

小Bug调试
这样写是完成了效果但是会出现一个小小的Bug,当退出初始界面的时候,还是会两秒就弹出一个对话框

解决办法
在初始Activity关闭的时候,判断是否还需要跳转(设置变量isIntent初始为true),并关闭跳转的timer任务

@Override
    protected void onStop() {
        super.onStop();
        //不再跳转
        isIntent=false;
        mTimer.cancel();
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样的话跳转任务也要判断一下

//判断是否还需要跳转
if (isIntent){
                        //跳转到界面
                        Intent intent = new Intent(WelcomeActivity.this, IpsetActivity.class);
                        startActivity(intent);
                    }
                }
            }, 2000);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/225176
推荐阅读
  

闽ICP备14008679号