如何在Android中撤销TextView上的遮罩过滤器模糊
我使用中的代码模糊了一些文本:如何在Android中撤销TextView上的遮罩过滤器模糊,android,mask,blur,Android,Mask,Blur,我使用中的代码模糊了一些文本: val radius = msgText.getTextSize() / 3 val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL) msgTextView.getPaint().setMaskFilter(mTextFilter) …在某个时候,我想撤销模糊,所以我尝试: msgTextView.getPaint().setMaskFilter(null)
val radius = msgText.getTextSize() / 3
val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
msgTextView.getPaint().setMaskFilter(mTextFilter)
…在某个时候,我想撤销模糊,所以我尝试:
msgTextView.getPaint().setMaskFilter(null)
但这并不能清除文本中的模糊,尽管描述如下:
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;
}
...
}
所以我很困惑。有什么想法吗?您的代码非常完美,只需根据需要添加这些行即可 设置模糊效果的步骤
val radius = msgText.getTextSize() / 3
val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
msgTextView.getPaint().setMaskFilter(mTextFilter)
删除模糊效果的步骤
msgTextView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
// Clear any previous
MaskFilter mTextView.getPaint().setMaskFilter(null);
应用内部模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.INNER);
应用外部模糊
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.OUTER);
应用法线模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.NORMAL);
应用实体模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.SOLID);
这里,ApplyBrumaskFilter是用户定义的方法。您的代码非常完美,只需根据需要添加这些行即可 设置模糊效果的步骤
val radius = msgText.getTextSize() / 3
val mTextFilter = BlurMaskFilter(radius, BlurMaskFilter.Blur.NORMAL)
msgTextView.getPaint().setMaskFilter(mTextFilter)
删除模糊效果的步骤
msgTextView.setLayerType(View.LAYER_TYPE_SOFTWARE,null);
// Clear any previous
MaskFilter mTextView.getPaint().setMaskFilter(null);
应用内部模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.INNER);
应用外部模糊
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.OUTER);
应用法线模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.NORMAL);
应用实体模糊的步骤
applyBlurMaskFilter(mTextView, BlurMaskFilter.Blur.SOLID);
此处,applyBlurMaskFilter是用户定义的方法。您是否在清除筛选器后立即尝试了msgTextView.invalidate?请尝试此操作,然后告诉我,mTextView.setLayerTypeView.LAYER_TYPE_软件,null;//清除任何以前的MaskFilter mTextView.getPaint.setMaskFilternull;谢谢他们都工作!我将使用@Radhey的答案,因为我已经设置了mTextView.setLayerTypeView.LAYER\u TYPE\u SOFTWARE,null;当我设置模糊时。如果您将其添加为答案,我将接受。您是否在清除筛选器后立即尝试了msgTextView.invalidate?尝试此操作并让我知道,mTextView.setLayerTypeView.LAYER_TYPE_SOFTWARE,null;//清除任何以前的MaskFilter mTextView.getPaint.setMaskFilternull;谢谢他们都工作!我将使用@Radhey的答案,因为我已经设置了mTextView.setLayerTypeView.LAYER\u TYPE\u SOFTWARE,null;当我设置模糊时。在我的api 24仿真器中,在模糊文本视图后,应用程序中的任何文本视图都会停留在模糊模式。它不适用于当前文本视图,但适用于所有文本视图。getPaint文档中有一个警告:/***获取用于文本的{@link TextPaint}。*使用此选项仅用于参考油漆的属性,而不是更改它们。*@返回用于文本的底色*/发布你的代码。希望您已经应用了正确的TextView引用。尝试在真实设备中进行交叉检查。msgTextView.setLayerTypeView.LAYER_TYPE_软件,null;在设置模糊遮罩之前添加此选项修复了该问题。感谢我的api 24模拟器,在模糊了文本视图后,应用程序中的所有文本视图都保持在模糊模式。它不适用于当前文本视图,但适用于所有文本视图。getPaint文档中有一个警告:/***获取用于文本的{@link TextPaint}。*使用此选项仅用于参考油漆的属性,而不是更改它们。*@返回用于文本的底色*/发布你的代码。希望您已经应用了正确的TextView引用。尝试在真实设备中进行交叉检查。msgTextView.setLayerTypeView.LAYER_TYPE_软件,null;在设置模糊遮罩之前添加此选项修复了该问题。谢谢