阴影层可能存在错误?

问题描述 投票:1回答:2

我正在尝试使用此代码在椭圆周围实现阴影:

shadow = new Paint();
    shadow.setColor(Color.YELLOW);
    shadow.setShadowLayer(10, 0, 0, Color.YELLOW);

并且绘制函数如下:

c.drawOval(ovalRect, shadow);
super.draw(c); //Draws bitmap

首先,它使用包含阴影的颜色绘制椭圆,然后在其上方绘制具有透明度的位图(位图没有任何颜色)。

我得到以下结果:你可以看到阴影没有沿着椭圆形扩散,但是它被剪掉了,是什么原因可能导致这种行为?

java android bitmap android-canvas draw
2个回答
0
投票

您可以通过更改半径来尝试这个:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- Drop Shadow Stack -->
    <item>
        <shape>
            <corners android:radius="12dp" />

            <padding
                android:bottom="1dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <solid android:color="#00CCCCCC" />
        </shape>
    </item>
    <item>
        <shape>
            <corners android:radius="12dp" />

            <padding
                android:bottom="1dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <solid android:color="#10CCCCCC" />
        </shape>
    </item>
    <item>
        <shape>
            <corners android:radius="12dp" />

            <padding
                android:bottom="1dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <solid android:color="#20CCCCCC" />
        </shape>
    </item>
    <item>
        <shape>
            <corners android:radius="12dp" />

            <padding
                android:bottom="1dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <solid android:color="#30CCCCCC" />
        </shape>
    </item>
    <item>
        <shape>
            <corners android:radius="12dp" />

            <padding
                android:bottom="1dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <solid android:color="#50CCCCCC" />
        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <solid android:color="@android:color/white" />

            <corners android:radius="12dp" />
        </shape>
    </item>

</layer-list>

0
投票

游戏后期,但仍然可以帮助某人:

尝试将android:clipChildren="false"设置为父ViewGroup。

根据您的布局,您可能还需要在父级中添加一些填充,并在该父级上设置android:clipToPadding="false"

这通常允许孩子(以及他们的阴影)在他们的边界之外绘制。

© www.soinside.com 2019 - 2024. All rights reserved.