首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >硬件加速视图的安卓clipPath等价物

硬件加速视图的安卓clipPath等价物
EN

Stack Overflow用户
提问于 2012-08-16 00:09:21
回答 3查看 1.9K关注 0票数 16

我的应用程序中唯一仍然是软件渲染的部分是渲染一个视图,其中我需要绘制一个圆形的位图。我使用clipPath来裁剪需要渲染成圆形的位图。

我知道clipPath不是硬件加速的,但我正在寻找一种算法,它可以让我使用硬件加速来提供同等的功能。

具体地说,我需要创建源位图的圆形裁剪区域,并将其渲染到我的画布上。

EN

回答 3

Stack Overflow用户

发布于 2013-07-10 16:11:53

如果你必须使用clipPath,你可以关闭硬件加速,如下所示。

代码语言:javascript
复制
<application
    android:label="@string/application_name"
    android:hardwareAccelerated="false">

您还可以控制应用层、活动层、窗口层和视图层之间的硬件加速。此Hardware Acceleration article on Android Development web site上描述了详细信息。

票数 1
EN

Stack Overflow用户

发布于 2013-05-11 19:50:56

你可以尝试这样做,尽管我不确定它是硬件加速的:

在onCreate中:

创建一个使用http://developer.android.com/reference/android/graphics/Paint.html#setXfermode(android.graphics.Xfermode)

  • put的画图(名为setXfermode ):

  • an AvoidXfermode,也是弃用的,它工作得很好。传递白色和具有高容差(如240)

的目标模式

在onLayout中:

  • 创建与视图大小相同的位图
  • 在画布内部用白色绘制圆,使用消除锯齿创建干净的边框

在onDraw中:

  • 在画布
  • 中绘制带有白色圆圈的位图现在,使用您在onCreate

中创建的bitmapPaint在画布内绘制位图

位图应该只在圆内渲染。

票数 0
EN

Stack Overflow用户

发布于 2013-05-11 20:05:12

如果您的位图更改不多,请将其裁剪一次,将其裁剪为新的位图,然后在onDraw中绘制裁剪后的位图。

下面是一个如何从源位图裁剪圆的示例

代码语言:javascript
复制
Bitmap bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
Canvas canvas = new Canvas(bitmap);
paint.setColor(Color.RED);
// Draw your shape here
canvas.drawCircle(cx, cy, radius, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));    
canvas.drawBitmap(sourceBitmap, 0, 0, paint);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11972926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档