Android:我可以创建一个非矩形的视图/画布吗?例如圆形的?

8 浏览
0 Comments

Android:我可以创建一个非矩形的视图/画布吗?例如圆形的?

我有一个可以在主内容上方悬浮的圆形视图(->在z轴方向上从屏幕中出来)。当有人点击屏幕时,我希望要么选择主内容,要么选择悬浮在上方的视图,当它覆盖主视图时。

到目前为止,这个工作非常完美。我在一个透明的画布上有一个圆形的项。这意味着你可以看到圆圈外的背景的一切。然而,你不能选择它,因为它仍然是悬浮画布,只是有一个透明的涂料。

现在我想知道,为了解决这个问题,是否可能使视图/画布本身成为圆形的形状?


更新

我添加了一张图片,以更好地解释我想要实现的内容。

alt text

0
0 Comments

Android中创建一个非矩形(例如圆形)的视图/画布是不可能的。这是因为View.java源代码是基于Rect类的,Rect类用于定义位置、大小以及要无效的区域等(“一个视图的几何形状是矩形。” - 来自View.java的注释)。

Canvas类通常是在Bitmap或GL之上构建的。Bitmap肯定是一个矩形(一个矩阵),所以Canvas似乎也表示一个矩形。如果使用GL,还需要指定一个视口(也是一个矩形)。

最明显的方法是在onTouch()方法中检查传递的坐标是否适合你的区域,如果不适合,则返回false。然后事件将传递给下方的View,并且应该处理该事件。

感谢zserge提供了详细的答案。最后提到的一点正是我现在正在做的,但是我在这方面还有一些其他问题,我在这里描述了这些问题:stackoverflow.com/questions/3832893

0
0 Comments

问题的出现原因:提问者想要创建一个非矩形的视图/画布,比如圆形,但是不清楚如何实现。

解决方法:使用 Android Selector 来避免默认的悬停图像。提问者可能没有正确解释自己的问题,但是通过添加了一张图片来澄清。虽然我不认为 Selector 是解决问题的方法,但如果我错了,请告诉我。需要指定一个 Android Selector 来避免默认的悬停图像。提问者可能没有正确解释自己的问题,但是通过添加了一张图片来澄清。虽然我不认为 Selector 是解决问题的方法,但如果我错了,请告诉我。你能解释一下那个圆圈是什么吗?它是一个图像,应该始终显示吗?它应该有一个 Selector 吗?我可以使用 dpad 访问它吗?这个圆圈是一种"弹出",悬停在主图层上方。它在 z 轴上超出了屏幕,位于主内容视图的上方。你可以将其视为一个圆形的 AlertDialog,并且可以从背景中选择项目。Klumpp: 使用一个 Selector 应该可以解决问题,你可以贴一些代码来重现问题吗?也许你是对的。你的回答中的链接是错误的,你可能想指向另一个链接。我感到困惑,以为你所说的 Selector 是不正确的。实际上,再次查看这两个链接后,我仍然不明白如何在其中使用 Selector。我将准备一些代码,并很快将其添加到我的问题中。

0
0 Comments

Android: 我可以创建一个非矩形的视图/画布,比如圆形吗?

这个问题的出现原因是用户想要创建一个非矩形的视图或画布,比如圆形。然而,在Android之前的版本中,不能直接创建非矩形的视图或画布。

解决方法是在Android L版本中,开发者添加了一个新的方法,可以将视图裁剪成矩形、圆形或圆角矩形的形状。这个方法允许开发者将一个视图裁剪成指定形状的drawable。

具体实现方法可以参考Android官方文档:https://developer.android.com/preview/material/views-shadows.html#clip

0