美文网首页
Android开发不依赖Activity的Dialog

Android开发不依赖Activity的Dialog

作者: 你的益达233 | 来源:发表于2020-12-28 09:14 被阅读0次

一、需求背景

要在闪验一键登录界面弹框,问了闪验技术,没法获取该界面的Context,自然就没法弹出普通的弹框
尝试1:首页不是一直存在嘛?结果用首页的Context,它在首页弹了,只有返回才看见,失败
尝试2:百度说:alert.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);这个也不行,按我的理解你的Context没变,你的Dialog是由Context生成的,你的getWindow是Dialog的,本质是没变的

二、我的解决方案

用一个Activity做出Dialog的样子,弹Dialog就用跳转Activity方式,有没有灵机一动。

示例代码:
配置文件:

<activity android:name=".ui.login.AccountFrozenDialogActivity"
        android:screenOrientation="portrait"
        android:theme="@style/out_login"/>


<style name="out_login" parent="@style/Theme.AppCompat.NoActionBar">
    <item name="android:windowFrame">@color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:backgroundDimAmount">0.5</item>
    <item name="android:windowAnimationStyle">@null</item>

</style>

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/offline_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
android:clickable="true"
android:gravity="center"
android:onClick="click"
android:orientation="vertical">


<android.support.constraint.ConstraintLayout
    android:id="@+id/cl_add_department"
    android:layout_width="280dp"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:background="@drawable/m_white_radius8_rectangle_style"
    >

    <TextView
        android:id="@+id/tv_tip"
        android:layout_width="match_parent"
        style="@style/tv_w_w_s16_c_33"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:layout_marginTop="24dp"
        android:layout_marginLeft="18dp"
        android:layout_marginRight="18dp"
        android:lineSpacingMultiplier="1.2"
        tools:text="您今日已经10次验证失败,为保证账号的安全,现冻结账户,24小时后可登录"
        />


    <View
        android:id="@+id/view_line_1"
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="@color/c_e2e3e6"
        app:layout_constraintTop_toBottomOf="@id/tv_tip"
        android:layout_marginTop="24dp"
        />
    <TextView
        android:id="@+id/tv_cancel"
        android:layout_height="48dp"
        android:layout_width="match_parent"
        android:textColor="@color/m_red_one"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/view_line_1"
        app:layout_constraintBottom_toBottomOf="parent"
        android:gravity="center"
        android:textSize="@dimen/m_size_16"
        android:textStyle="bold"
        />



</android.support.constraint.ConstraintLayout>

</LinearLayout>

关键代码就是上面的了,Activity代码就可以按照平常写Activity代码那样,也可以写弹框那样。
需要完整代码的可私信,点赞。

相关文章

网友评论

      本文标题:Android开发不依赖Activity的Dialog

      本文链接:https://www.haomeiwen.com/subject/dtrznktx.html