如何在 Android 中撤消 TextView 上的蒙版滤镜模糊
How to undo a mask filter blur on a TextView in Android
我使用 here 中的代码模糊了一些文本:
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);
这里applyBlurMaskFilter()
是用户定义的方法。
我使用 here 中的代码模糊了一些文本:
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);
这里applyBlurMaskFilter()
是用户定义的方法。