【问题标题】:Set opacity to PictureDrawable将不透明度设置为 PictureDrawable
【发布时间】:2014-11-21 21:03:20
【问题描述】:

我需要一条关于将不透明度设置为PictureDrawable 对象的建议,因为PictureDrawable 中没有实现通常的setAlpha()。 我的情况与this one 非常相似(我还使用库从原始资源中的 SVG 中获取我的可绘制对象)。但我不能使用该解决方案,因为我想动态更改不透明度(而不是在创建时应用颜色过滤器)。

SurfaceView 上绘图时,上下文正在为多个可绘制对象设置动画。

在这种情况下有什么好的解决方法?

谢谢。

【问题讨论】:

  • 使用Canvas.saveLayerAlpha,此方法在pre v4设备中绘制AlphaAnimations时使用

标签: android surfaceview android-drawable androidsvg


【解决方案1】:

感谢@pskink,我将稍微详细说明一下以供进一步参考。 这就是我在onDraw(Canvas canvas) 方法中所做的(在我的情况下,int opacity 从 0 迭代地更改为 255):

int width = drawable.getIntrinsicWidth();
int height = drawable.getIntrinsicHeight();

canvas.saveLayerAlpha(x, y, x + width, y + height, opacity,
                                  Canvas.HAS_ALPHA_LAYER_SAVE_FLAG);

drawable.setBounds(x, y, x + width, y + height);
drawable.draw(canvas);
canvas.restore();

This answer 还为saveLayerAlpha() 的使用提供了很好的指导。

【讨论】:

    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 2020-07-03
    • 2010-10-18
    • 1970-01-01
    • 2015-04-28
    • 2016-05-15
    • 1970-01-01
    • 2016-03-01
    相关资源
    最近更新 更多