Drawable转换为位图,Drawable大小/尺寸未知。

3

我有一个可缩放的矢量对象。由于你不能裁剪它(或者因为ICS强制启用了硬件加速而无法裁剪),因此精灵动画就无用了。

我试图将可缩放的对象转换为具有特定大小的位图(最好是屏幕纵横比的百分比)。

当然,这个版本需要超级内存效率。

我需要帮助创建具有特定大小的位图,以下是我目前所拥有的:

public Bitmap svgTObitmap(String name, int percentage, int screen_width, int screen_height)
{
    _resID = _context.getResources().getIdentifier( name , "raw" , _context.getPackageName());
    SVG svg = SVGParser.getSVGFromResource(_context.getResources(), _resID);

    Drawable drawable = svg.createPictureDrawable();

    Bitmap bmp = ((BitmapDrawable)drawable).getBitmap();

    return bmp;
}
1个回答

7

作为矢量图形,显然你的Drawable实际上不是BitmapDrawable。相反,你需要将Drawable绘制在Bitmap上。请参见我对另一个问题给出的答案

Bitmap bmp = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bmp); 
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);

显然,在您的情况下,您应该明确指定所需的大小,而不是尝试获取可绘制对象的固有高度/宽度。

非常感谢,我已经被这个问题卡了几个小时了。 - Oliver Dixon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接