DIalog实现蒙版指引提示效果
上篇博客发了一下 DialogUtil 的工具方法
这篇文章就给大家讲一下 如果用 dialog 实现应用的 蒙版介绍指引功能。先贴下效果图
话不多说 代码献上
//这个通用的 CustomDialog其实上篇博客已经写到了 再贴一下 public static Dialog getCustomDialog(final Activity activity, View view, boolean dismissTouchOutside, boolean cancelable, int theme) { Dialog dialog = new Dialog(activity, R.style.Dialog_FullScreen); dialog.setContentView(view); dialog.setCancelable(cancelable); dialog.setCanceledOnTouchOutside(dismissTouchOutside); if (!cancelable) { dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { dialog.dismiss(); activity.finish(); } return false; } }); } return dialog; } 上面方法中用到的 style Dialog_FullScreen <style name="Dialog.FullScreen" parent="Theme.AppCompat.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@android:color/transparent</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> </style> //这个里面用到的图片自己替换下 public static void checkIsShowTipsDialog(final Activity activity, String activityTag) { final Preferences pref = Preferences.getInstance(activity); View view = LayoutInflater.from(activity).inflate(R.layout.dialog_tips, null, true); ImageView imageView = (ImageView) view.findViewById(R.id.tips_iv); boolean isShow = false; if (activityTag.equals(DIALOG_TIPS_ACTIVITY_HOMEPAGE)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_HOMEPAGE, false); imageView.setBackgroundResource(R.drawable.tips_homepage); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_HOMEPAGE, true); } else if (activityTag.equals(DIALOG_TIPS_ACTIVITY_LIVING)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING, false); imageView.setBackgroundResource(R.drawable.tips_living); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING, true); } else if (activityTag.equals(DIALOG_TIPS_ACTIVITY_LIVING_PREPARE)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING_PREPARE, false); imageView.setBackgroundResource(R.drawable.tips_living_setting); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING_PREPARE, true); } else if (activityTag.equals(DIALOG_TIPS_ACTIVITY_PERSONAL)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_PERSONAL, false); imageView.setBackgroundResource(R.drawable.tips_personal); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_PERSONAL, true); } else if (activityTag.equals(DIALOG_TIPS_ACTIVITY_PERSONAL_VIDEO)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_PERSONAL_VIDEO, false); imageView.setBackgroundResource(R.drawable.tips_personal_video); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_PERSONAL_VIDEO, true); } else if (activityTag.equals(DIALOG_TIPS_ACTIVITY_LIVING_WATCHING)) { isShow = pref.getBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING_WATCHING, false); imageView.setBackgroundResource(R.drawable.tips_watching); pref.putBoolean(Preferences.KEY_IS_SHOW_TIPS_DIALOG_LIVING_WATCHING, true); } if (isShow) { return; } final Dialog dialog = getCustomDialog(activity, view, true, true, -1); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { dialog.dismiss(); } }); dialog.show(); } dialog_tips.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:id="@+id/tips_iv" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="fitXY"/> </LinearLayout>
怕有的小伙伴 找不到合适的 蒙版图片 附上一张备用
希望可以帮助到大家 ,谢谢!
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的