【问题标题】:How to make part of a view invisible?如何使视图的一部分不可见?
【发布时间】:2015-11-10 03:00:27
【问题描述】:

所以这是我想做的一件奇怪的事情,它在我的应用程序中看起来很棒,但对于我的生活来说,我无法弄清楚如何做。

假设我的屏幕上有这样的背景:

然后我向它添加一个视图可以有任意数量的子视图/内容。这个视图自然地遮住了背景:

到目前为止一切顺利。现在是棘手的部分。我想实现一些能让我“看穿”这个视图的一部分的东西。从本质上讲,它会使视图看起来不可见,但仅在一个特定区域内。这是它的样子:

到目前为止,我还没有找到任何方法。

【问题讨论】:

    标签: android android-layout android-canvas android-view


    【解决方案1】:

    您可以使用Bitmap Masking 技术来完成您想要的。在您的 onDraw() 方法中类似于以下内容。

        Paint paint = new Paint();
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
        setLayerType(LAYER_TYPE_HARDWARE,paint); // if hardware acceleration is on
        // canvas.saveLayer(0, 0, canvas.getWidth(), canvas.getHeight(), paint); // Use this if hardware acceleration is off.
        canvas.drawRect(200, 200, 400, 400, paint); // This will be HOLE in the VIEW
    


    欲了解更多信息,请阅读:https://stackoverflow.com/a/33483016/4747587

    【讨论】:

      【解决方案2】:

      Henry 提到了一个很好的解决方案。另一个简单的解决方案通常是只使用 PNG 可绘制或 9-patch-drawable。如果您的覆盖区域始终相同,那么 PNG 可以让您完全灵活地选择想要透明的内容,其余部分保持您定义的内容。您可以缩放 PNG,或者 - 如果您只想缩放特定区域,请使用 9-patch-drawable。

      【讨论】:

        猜你喜欢
        • 2012-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2019-03-20
        • 1970-01-01
        相关资源
        最近更新 更多