我想为新用户快速介绍一下我的应用程序。介绍将突出 ui 中的功能并解释功能,类似于 Slices(见下面的屏幕截图)和 Youtube 应用程序。
我想这涉及整个屏幕的透明覆盖,然后在屏幕上获取视图的位置,以便可以在覆盖中圈出或突出显示它。我不确定如何使覆盖的一部分不透明。有任何想法吗?
我想为新用户快速介绍一下我的应用程序。介绍将突出 ui 中的功能并解释功能,类似于 Slices(见下面的屏幕截图)和 Youtube 应用程序。
我想这涉及整个屏幕的透明覆盖,然后在屏幕上获取视图的位置,以便可以在覆盖中圈出或突出显示它。我不确定如何使覆盖的一部分不透明。有任何想法吗?
为了以最简单的方式获得您想要的效果,您需要创建新资产并让它们覆盖您的不透明背景。这会产生效果的错觉,而不会让动态方式在所有设备上正常工作。
在层中打孔的动态方法包括创建自定义视图、覆盖 dispatchDraw 方法以及将自定义蒙版应用到画布。为了在画布上打孔,您的自定义绘画对象将像这样创建:
maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
兼容性不是很好,所以我建议伪造它。
只需添加一个新的 View() 并将背景设置为黑色,alpha 为 70%。确保 Fragment 的 Parent ViewGroup 是一个 Relativelayout 并且调用了 bringChildToFront(MyHighlightedView)。
overlay=new View();
overlay.setBackgroundColor(#*BLACKWITHALPHAVALUE*);
getView().addView(overlay, new LayoutParams(MATCH_PARENT,MATCH_PARENT);
getView().bringChildToFront(overlay);
getView().bringChildToFront(MyHighlightedView);