可绘制到位图,可绘制的未知大小/维度

时间:2012-05-01 22:10:19

标签: java android bitmap drawable

我有一个可绘制的对象,它是一个向量。由于你不能裁剪(或因为ICS强制硬件加速而剪辑)一个drawable它使得精灵动画无用。

我正在尝试将drawable转换为具有特定大小的位图(最低屏幕尺寸的百分比以获得最佳效果)。

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

我需要帮助的是创建具有特定大小的位图,这是我到目前为止所获得的:

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 个答案:

答案 0 :(得分:7)

来自矢量,显然您的Drawable实际上不是BitmapDrawable。您需要在Drawable上绘制Bitmap。请参阅此answer我提出的另一个问题:

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);

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