Android activity alert提示弹框实现

<code>原创不易,请多多支持!对软件技术感兴趣的童鞋请关注我,后续技术分享更精彩。/<code> 

效果

实现效果如图。

通过activity构建弹框,可在应用中任何页面提示。

Android activity alert提示弹框实现


实现步骤

  1. 新建空白activity。
  2. activity中闹铃弹框实现。
  3. manifest添加权限。
  4. 样式调整。

代码

android studio 包路径右键,新建空白activity模板,命名AlertAlarmClockActivity。

修改AlertAlarmClockActivity类。

<code>public class AlertAlarmClockActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏title
requestWindowFeature(Window.FEATURE_NO_TITLE); // hide title
//屏蔽自动生成的布局UI,后面通过代码构建
// setContentView(R.layout.activity_alert_alarm_clock);
//屏蔽点击弹框外延,关闭弹框功能
setFinishOnTouchOutside(false);


\t\t\t\t//弹框窗口属性设置。设置弹框在其他界面之上
Window win = getWindow();
WindowManager.LayoutParams winParams = win.getAttributes();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
winParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;

}else{
winParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
}
//弹框窗口在锁屏状态下可见
winParams.flags |= (WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

//创建弹框
createDialog();
}

} /<code>

onCreate方法中实现参数定制和弹框构建逻辑。详见注释说明。

弹框构建逻辑createDialog()如下:

<code>private void createDialog() {
String taskMsg = "你使用闹钟时间到了!!!";

AlertDialog dialog = new AlertDialog.Builder(this)
.setIcon(R.drawable.flutter_app_icon)
.setTitle("任务提醒")
.setCancelable(false)
.setMessage(taskMsg)
.setPositiveButton("确 认", (dlg, whichButton) -> {
finish();
}).create();

dialog.show();


//button 置中 Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);

LinearLayout.LayoutParams positiveButtonLL =(LinearLayout.LayoutParams)positiveButton.getLayoutParams();
positiveButtonLL.gravity = Gravity.CENTER;
positiveButtonLL.width = ViewGroup.LayoutParams.MATCH_PARENT;
positiveButton.setLayoutParams(positiveButtonLL);

}/<code>

注意:Android各版本兼容问题,activity实现类和AlertDialog请使用以下包。

<code>import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;/<code>

添加样式:{项目}\\app\\src\\main\\res\\values\\styles.xml文件添加样式。

<code><style><br>        <!--不设置activity进入和退出动画样式--><br>        <item name="android:windowAnimationStyle">@null</item><br>        <!--设置窗口的背景为透明,设置透明背景必须要设置此项--><br>        <item name="android:windowBackground">@android:color/transparent</item><br>        <!--设置窗口的背景是否为半透明,设置透明背景必须要设置此项--><br>        <item name="android:windowIsTranslucent">true</item><br>        <!--设置状态栏的背景为半透明--><br>        <item name="android:windowTranslucentStatus">true</item><br>    /<style>/<code>

manifest文件通过android:theme属性添加对应样式引用。

AppCompatActivity有对应的适配样式,不添加可能导致运行报错。

<code><activity> /<code>

manifest文件添加权限申明

<code><uses-permission>/<code>

总结

本文介绍了activity构建应用内任意界面上显示的弹框方法。通过继承AppCompatActivity类,并覆盖onCreate方法,可以快速实现alert弹窗效果。
该弹窗实际也可在其他应用界面之上展示,但有一个缺点,当点击系统回退或回到桌面键时,会被隐藏。真拿来做系统闹铃弹窗还有所缺陷。在应用内部任意页面弹框提示需求是完全没问题的。若想了解系统层面的闹铃弹框实现,请关注我后续文章分享。

刚开始学习Android端应用,了解尚浅。存在很多不足和待完善的地方。欢迎志同道合的朋友指正和探讨。


分享到:


相關文章: