android - 像 Android 4.4 一样创建蓝色 "tutorial"对话框

标签 android android-view android-alertdialog android-dialog

我想创建一些像 Android 4.4 中所示的“对话框”,例如当您第一次看到沉浸式模式时。小箭头对我来说很重要,因为我希望对话框出现在屏幕上的不同位置。

这就是我所说的:enter image description here

我需要创建自定义AlertDialog吗?我如何移动它,我可以使用 View 的坐标吗?我真的不知道从哪里开始。有创建此类事物的示例吗?我对使用 ShowcaseView 库不感兴趣,因为我认为它具有“旧”全息外观。

最佳答案

您可以使用 getLocationOnScreen() 获取 View 的坐标,请确保在 View 膨胀后调用此方法(因此,不要在 Activity 的 onCreate() 中调用),否则您将返回默认 int 值(即 0)。

您应该创建自己的 DialogFragment 。合并您自己的自定义布局,其中包含小气泡和按钮。 onCreateDialog() 的快速而肮脏的示例将具有以下内容

Dialog dialog = new Dialog(getActivity());
// Get rid of the annoying alert dialog title bar
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
// You must set the content view after requesting window features, not before.
dialog.setContentView(someView);
// Make the dialog full screen
dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
//Dim the background
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(80, 0, 0, 0)); 

要合并小箭头,您可以尝试使用 9 block 图像的变体作为小气泡的背景。另一种选择是将箭头和气泡放入同一个容器中,并将它们之间的边距/填充设置为 0。由于您拥有坐标,因此您可以相应地调整箭头的水平边距。这实际上是一个很酷的想法,我想这个周末我会尝试自己的解释。

我实际上一直在致力于我自己对展示库的解释,Here is what i achieved 。我认为大部分动态位置变化应该是相同的

关于android - 像 Android 4.4 一样创建蓝色 "tutorial"对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22104132/

相关文章:

android - 哪个事件用于在android中左右滑动手指病房?

android - 使用 R8 混淆应用程序导致超过 GC 开销限制

android - 在android studio中使用REST api根据用户ID获取用户名

android - 以编程方式在 API 级别 7 中设置 View 位置

android - 如何为 ListView 中的项目设置 OnTouchListener

android - 单击 ListView 项时如何关闭 AlertDialog

java - AlertDialog : After showing the dialog, 背景 Canvas 渲染继续,但对话框永远不会关闭

android - 如何在android中以编程方式启用/禁用蓝牙

android - 自定义 View 的状态已保存,但从未恢复

android - AlertDialog 是否支持 WebView?