如何在TextView后面创建一个大的模糊阴影?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在TextView后面创建一个大的模糊阴影?相关的知识,希望对你有一定的参考价值。

我想在TextView下面创建一个相当大的柔和阴影。但是我无法使用足够大的阴影半径,因为如果我将其设置为超过25.0,android将崩溃。

This is an example of the shadow I want to create

This is the largest shadow radius I'm able to create

上面的第一张图片来自我们的ios应用程序,并根据我的需要显示文本下方的阴影。如您所见,我无法在Android上重新创建此阴影效果。

阴影效果的XML样式目前是这样的:

<style name="TextViewShadowEffectSoft">
    <item name="android:shadowColor">#DD000000</item>
    <item name="android:shadowDx">0.0</item>
    <item name="android:shadowDy">0.0</item>
    <item name="android:shadowRadius">25.0</item>
</style>

在创建时膨胀到AutoResizeTextView(TextView的祖先):

 AutoResizeTextView title = (AutoResizeTextView) getActivity().getLayoutInflater().inflate(R.layout.text_shadow_soft, null);

text_shadow_soft.xml的位置是:

com.app.models.AutoResizeTextView
style="@style/TextViewShadowEffectSoft" />

我的应用的最低API为19。

编辑:设置android:shadowRadius高于25.0时崩溃日志:

05-12 13:16:20.590 10679-10781/com.app E/rsC++: RS CPP error: Blur radius out of 0-25 pixel bound
05-12 13:16:20.593 10679-10781/com.app E/rsC++: RS CPP error (masked by previous error): Allocation creation failed
05-12 13:16:20.593 10679-10781/com.app E/rsC++: RS CPP error (masked by previous error): Allocation creation failed
05-12 13:16:20.593 10679-10781/com.app E/rsC++: RS CPP error (masked by previous error): Blur radius out of 0-25 pixel bound

                                                      --------- beginning of crash
05-12 13:16:20.594 10679-10781/com.app A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x28 in tid 10781 (RenderThread)

欣赏所有的想法和意见!

答案

似乎与您的硬件相关的一些代码限制了它。所以请使用软件渲染,将android:layerType="software"添加到您的视图中。

或者在代码中使用

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

Documentation

以上是关于如何在TextView后面创建一个大的模糊阴影?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CGContext 模糊线条的边缘

向圆圈添加投影模糊阴影

Android 样式/阴影正确 ListItem 布局

阴影贴图上的高斯模糊(FBO/纹理)

Android移动应用开发之TextView实现阴影跑马灯文字效果

用GTK实现模糊阴影技术