在 Android 应用程序中,弹出窗口是一种非常常见的设计元素。PopupWindow 是 Android 中的一个小部件,用于创建简单的弹出窗口,它可以在指定的视图区域中显示一个自定义的视图(View)或者布局(Layout)。在 Material Design 中,PopupWindow 的设计也有了一些全新的变化,本文将会对这些变化进行详细的解释和阐述。
弹出窗口的设计范式
在 Material Design 之前,Android 应用开发者经常使用 Dialog 来实现弹出窗口的设计。但是,随着 Material Design 的推广,PopupWindow 逐渐成为了首要的弹出设计元素。
对比 Dialog 和 PopupWindow
在弹出窗口的使用上,Dialog 和 PopupWindow 的设计方式存在巨大的差异。在 Dialog 中,弹出窗口会覆盖整个屏幕,并将用户的视线完全转移到弹窗上。在用户完成弹窗的使用后,弹窗消失,用户可以恢复正常的操作。
相比之下,PopupWindow 通常只会在特定的情况下出现,并且它们通常是半透明的(或者不透明度相对较低),以便用户仍然可以看到在弹窗后面的部分 UI。这对于用户体验更具有优势。
Android Material Design 中的 PopupWindow
Material Design 中,PopupWindow 的设计有了重大的更新。弹窗现在被认为是更加简单易用的工具,用于完成一些更加具体的任务。以下是几个关于 Material Design 中 PopupWindow 的具体示例。
1. 带箭头的 PopupWindow
在 Material Design 中,PopupWindow 可以在其顶部添加一个箭头,以便有助于更好地连接该弹窗与主应用程序中使用的 UI 元素。通过这种方式,用户可以更加容易地跟踪应用程序中正在进行的任务。
// 创建 PopupWindow popupWindow = new PopupWindow(context); popupWindow.setContentView(popupView); popupWindow.setHeight(LayoutParams.WRAP_CONTENT); popupWindow.setWidth(LayoutParams.WRAP_CONTENT); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); // 显示 PopupWindow popupWindow.showAsDropDown(anchorView, 0, -10);
2. Material Design 弹窗
在 Material Design 中,弹窗通常看起来比以前更加现代化、更加简单。PopupWindow 的新设计技术可以让你更容易地在应用程序中添加这些弹窗。
// 定位 PopupWindow popupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0); // 将 PopupWindow 设置为 Material Design 风格 popupWindow.setBackgroundDrawable( new ColorDrawable(ContextCompat.getColor(context, android.R.color.transparent))); popupWindow.setElevation(elevation);
3. 与悬浮按钮配合使用
在现代的 Android 应用程序中,悬浮按钮是主要的控件之一,它可以帮助用户进行各种操作。如果你的应用程序中正在使用这些悬浮按钮,那么弹窗窗口的设计也需要对这些按钮进行适当的调整。
// 设置悬浮按钮的位置 int[] location = new int[2]; floatingButton.getLocationOnScreen(location); // 显示 PopupWindow popupWindow.showAtLocation(parentView, Gravity.NO_GRAVITY, location[0], location[1] - popupWindow.getHeight());
总结
这篇文章我们重点探讨了在 Material Design 中的 PopupWindow 的设计,以及在实现这些新的设计时需要注意些什么。熟练掌握这些设计技巧可以让我们的应用程序更加现代化,更加符合用户的期望。如果你正在进行 Android 开发,那么你应该开始关注 Material Design,这将会是未来的开发趋势。
以上就是本文对 Android Material Design 中的 PopupWindow 的详细介绍,希望本文能够对你的学习和工作有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a49d6badd4f0e0ffcecc39