当文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中没有任何效果

2024-04-20

我一直在尝试创建一个自定义视图,其文本下的形状模糊。问题是 BlurMaskFilter 对我在画布上绘制的任何形状没有影响。以下是我在构造函数中初始化 Paint 对象的方法:

paint = new Paint(0);
paint.setColor(0xffffffff);
paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

mShadowPaint = new Paint(0);
mShadowPaint.setColor(0xff333333);
mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

我在 onDraw() 中调用这样的函数:

canvas.drawOval(mShadowBounds,mShadowPaint);
canvas.drawText("hello", x, y, paint);

但这就是我所看到的。

使用 android 4.0 sdk 并在 4.0.4 Galaxy Nexus 设备(英国)上进行测试。我想知道这是否是 4.0.4 中的一个错误,因为我在 4.0 和 4.0.3 的模拟器上测试了它,并且它在它们上确实模糊得很好,除非我做了完全错误的事情?

编辑:这是扩展的视图代码,用于在其他平台上测试它。

import android.content.Context;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class BlurTestView extends View{

    private Paint paint;
    private Paint mShadowPaint;
    private int size = 100;
    private RectF mShadowBounds = new RectF();

    public BlurTestView(Context context) {
        this(context, null, 0);
    }

    public BlurTestView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public BlurTestView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        paint = new Paint(0);
        paint.setColor(0xff333333);
        paint.setTextSize(size);
        paint.setMaskFilter(new BlurMaskFilter(8, BlurMaskFilter.Blur.NORMAL));

        mShadowPaint = new Paint(0);
        mShadowPaint.setColor(0xff333333);
        mShadowPaint.setMaskFilter(new BlurMaskFilter(10, BlurMaskFilter.Blur.NORMAL));

        mShadowBounds.top = size;
        mShadowBounds.bottom = mShadowBounds.top+(size /2);
        mShadowBounds.left = 0;
        mShadowBounds.right = (int)paint.measureText("hello");
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        canvas.drawOval(mShadowBounds,mShadowPaint);
        canvas.drawText("hello", 0, size, paint);
    }

}

对我来说看起来像一个错误。我向 Android 团队报告了这个问题;我们会看看他们怎么说。

如果您设置它会正确渲染android:hardwareAccelerated="false"关于您的活动AndroidManifest.xml.

以下是 Android 图形团队的官方说法: “硬件加速不支持 BlurMaskFilter。” (截至2012年7月10日)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中没有任何效果 的相关文章

随机推荐

  • $this->form_validation->run() 在没有验证规则的情况下返回 FALSE

    使用 CodeIgniter 时Form validation类 该set rules 方法允许用户向其表单字段添加无限数量的检查 这些规则通常都定义在同一个地方 就在run 方法被调用 有效示例 Require the user to b
  • 为什么 jQuery 文件上传插件的进程事件不触发?

    我对 jQuery 文件上传插件有一个奇怪的问题 如果我使用这个 SITAX fileupload fileupload url myurl add function e data console log add event process
  • 如何将pandas数据框的单行拆分为两行?

    我试图将数据框的单行分成两行 在数据框中 开始和结束列可用 我想根据条件拆分行 我有一个如下所示的数据框 symbol start end size ABC 2015 08 27 18 00 00 2015 08 28 05 00 00 1
  • Haskell:为什么将辅助函数命名为“go”?

    I see go在阅读 Haskell 材料或源代码时 我经常会遇到这样的情况 但我从来没有真正感到舒服 我猜它在我的脑海中具有 goto 的负面含义 我开始用 LYAH 学习 Haskell 这就是我开始使用 Haskell 的原因acc
  • WebView - 在每个请求上定义用户代理

    目前 我将请求消息的 User Agent 设置如下 var rm new HttpRequestMessage HttpMethod Post new Uri http example com rm Headers Add User Ag
  • Android:如何最大化 PreferenceFragment 宽度(或消除边距)?

    如果您查看 Android 设置屏幕截图或BC碎片 https github com commonsguy cw android tree master Prefs FragmentsBC截图中 PreferenceFragment 中有边
  • 如何在 C# 中编写条件锁?

    问题是我一直在使用锁语句 http msdn microsoft com en us library c5kehkcz aspx为了保护我的代码的关键部分 但现在 我意识到我可以允许在满足某些条件的情况下并发执行该关键代码 有没有办法调节锁
  • PHP 字符串不允许使用 < 和 > 字符

    我的代码中有一个字符串 如下例所示 很简单 但是当我尝试回显字符串时 它不喜欢 字符 所有得到回应的是 巴拉巴拉 所以 基本上我猜我需要转义这些字符才能让它们在 PHP 中工作 但我不确定具体如何操作 我将其用于模板系统 因此在 html
  • MVC 中带有 Ninject 的适当存储库生命周期范围

    在 MVC 3 应用程序中将 Entity Framework 4 与 Ninject 结合使用时 存储库和 EF 上下文的适当生命周期范围是什么 我一直在使用默认的 InTransientScope 但质疑是否应该使用 InRequest
  • 如何使 BigCommerce 小部件与 PageBuilder 兼容

    我正在按照这里的教程https developer bigcommerce com api docs storefront widgets widgets tutorial https developer bigcommerce com a
  • 使用 Blazor 和 C# 刷新 html 表数据

    我有一种情况 我有一个 for 循环 它从我的数据模型创建我的 html 表 该数据模型从 SQL Server Express 获取数据 我想知道是否可以创建一个自动刷新方法 其中表数据仅刷新而不刷新整个页面 如果没有 那么也许 OnCl
  • 使用 PrototypeJS 进行跨源资源共享

    我在跨源资源共享和原型方面遇到一些问题 我对外部资源有一个简单的发布请求 对于简单的发布请求 必须满足一些规则 Content Type 必须是 application x www form urlencoded multipart for
  • 如何在 XMPP 中实现“上次查看时间”功能(如 Whatsapp)?

    我正在开发一个聊天应用程序 并希望添加 上次查看时间 功能 我正在尝试使用存在节来实现它 但遇到一个问题 请检查下面的链接 当用户 B 也不可用时 未获取用户 A 的不可用状态 https stackoverflow com questio
  • LinkedHashMap 的 ConcurrentModificationException

    不确定是什么触发了java util ConcurrentModificationException当我迭代时LinkedHashMap下面代码中的结构 使用Map Entry方法效果很好 从之前的帖子中没有得到关于触发此问题的良好解释 任
  • 是否可以在RStudio中漂亮地显示管道字符(%>%)?

    管道运营商 gt 被大量使用在dplyr 我遇到了这个设置 将其精美地写为 unicode 三箭头字符 如下所示 我想知道是否有可能获得相同的显示RStudio 附注Emacs 的源代码 包括 elisp 代码 位于 https githu
  • 如何知道 ModelState 是否包含错误

    当表单发布到我的控制器中时 我会进行以下检查 if ModelState IsValid 如果模型无效 则会将错误添加到ModelState 然后 模型会连同验证摘要一起传递到视图 但是 我想检查一下是否ModelStatejQuery 内
  • 在 iOS 上合并 PDF 文件

    iOS中有没有一种方法可以合并PDF文件 即将一个文件的页面附加到另一个文件的末尾并将其保存到磁盘 我对 Jonathan 的代码进行了一些重构 以加入任何大小的 PDF 文件 NSString joinPDF NSArray listOf
  • 如何使用Cmake使用框架?

    对于 Macos 我想链接到一些框架 在 Windows 中 我想链接到一些库 比如OpenGL Framework 如何使用cmake表达这个需求 您可以尝试以下代码 target link libraries
  • 具有数百个字段的 Django 模型

    我有一个具有数百个属性的模型 属性可以是不同的类型 整数 字符串 上传的文件 我想从最重要的属性开始逐步实现这个复杂的模型 我可以想到两个选择 将属性定义为常规模型字段 定义一个单独的模型来分别保存每个属性 并使用ForeignKey 我还
  • 当文本模糊时,Android BlurMaskFilter 在 canvas.drawOval 中没有任何效果

    我一直在尝试创建一个自定义视图 其文本下的形状模糊 问题是 BlurMaskFilter 对我在画布上绘制的任何形状没有影响 以下是我在构造函数中初始化 Paint 对象的方法 paint new Paint 0 paint setColo