java - 阴影层可能存在错误?

标签 java android bitmap android-canvas draw

我正在尝试使用以下代码实现椭圆形周围的阴影:

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

绘制函数如下所示:

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

所以首先它用包含阴影的颜料绘制椭圆形,然后在其顶部绘制具有透明度的位图(位图没有任何颜料)。

我得到以下结果: screenshot 正如您所看到的,阴影没有沿着椭圆形传播,而是被剪切掉了,什么可能导致这种行为?

最佳答案

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

<?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>

关于java - 阴影层可能存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18532806/

相关文章:

java - FragmentActivity 与 Fragment 类型 GoogleMap 交互

java - 连接数组的两个元素以创建新的数组元素

java - Spring JDBC 与普通 JDBC 的区别?

java - Android程序崩溃

c# - 在 C# 中快速使用位图

java - Apache HttpAsyncClient 内存泄漏

android - Android 中的 slider 控件

android - 找不到 com.android.tools.lint :lint-gradle:26. 1.1

Android创建一个圆形位图而不在 Canvas 上绘制它

具体1位位图坐标转换算法