如何在Android O上没有崩溃的情况下setMaskfilter?

时间:2018-03-30 16:56:00

标签: android android-8.0-oreo

我在网格中使用了RecyclerView。每个项目都有textview和Imageview。 我在我的适配器中为textview设置了掩码过滤器,如下所示:

float[] direction = new float[]{0.0f, -1.0f, 0.5f};
MaskFilter maskFilter = new EmbossMaskFilter(direction, 0.8f, 15f, 1f);
holder.textview.getPaint().setMaskFilter(maskFilter);

这是第一次运行时崩溃(Fatal signal 11 (SIGSEGV), code 1, fault addr 0xfff8022c in tid 32638 (ReferenceQueueD))的原因。

1 个答案:

答案 0 :(得分:0)

这是已知的bug。 方法canvas.drawText();中的问题 但是我找到了一种避免崩溃的方法,方法是使用canvas.drawPath();

Path path = new Path();
paint.getTextPath( text, 0, text.length(), x, y, path );
canvas.drawPath( path, paint );

如果要在TextView中使用它,则必须扩展此类并创建新的onDraw方法。 享受吧!