如何在 Android 中的 TextView 上撤消蒙版过滤器模糊

Cro*_*ile 2 android mask blur

我使用这里的代码来模糊一些文本:

    val radius = msgText.getTextSize() / 3
    val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
    msgTextView.getPaint().setMaskFilter(mTextFilter)
Run Code Online (Sandbox Code Playgroud)

...在某些时候我想撤消模糊,所以我尝试:

msgTextView.getPaint().setMaskFilter(null)
Run Code Online (Sandbox Code Playgroud)

但这并没有清除文本中的模糊之处,尽管它有描述:

package android.graphics;

...

public class Paint {

...
/**
     * Set or clear the maskfilter object.
     * <p />
     * Pass null to clear any previous maskfilter.
     * As a convenience, the parameter passed is also returned.
     *
     * @param maskfilter May be null. The maskfilter to be installed in the
     *                   paint
     * @return           maskfilter
     */
    public MaskFilter setMaskFilter(MaskFilter maskfilter) {
        long maskfilterNative = 0;
        if (maskfilter != null) {
            maskfilterNative = maskfilter.native_instance;
        }
        nSetMaskFilter(mNativePaint, maskfilterNative);
        mMaskFilter = maskfilter;
        return maskfilter;
    }
...
}
Run Code Online (Sandbox Code Playgroud)

所以我很困惑。任何的想法?

Rad*_*hey 5

您的代码是完美的,只是您需要根据需要添加这些行!

设置模糊效果

val radius = msgText.getTextSize() / 3
val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
msgTextView.getPaint().setMaskFilter(mTextFilter)
Run Code Online (Sandbox Code Playgroud)

去除模糊效果

msgTextView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
// Clear any previous 
MaskFilter mTextView.getPaint().setMaskFilter(null);
Run Code Online (Sandbox Code Playgroud)

应用内部模糊

applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.INNER);
Run Code Online (Sandbox Code Playgroud)

应用外部模糊

applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.OUTER);
Run Code Online (Sandbox Code Playgroud)

应用普通模糊

applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.NORMAL);
Run Code Online (Sandbox Code Playgroud)

应用实体模糊

applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.SOLID);
Run Code Online (Sandbox Code Playgroud)

applyBlurMaskFilter()是用户定义的方法。