一、需求背景
要在闪验一键登录界面弹框,问了闪验技术,没法获取该界面的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代码那样,也可以写弹框那样。
需要完整代码的可私信,点赞。