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;
}
4

1 に答える 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);

明らかに、あなたの場合、ドローアブルの固有の高さ/幅を取得しようとする代わりに、明示的に必要なサイズを指定します。

于 2012-05-01T22:20:55.843 に答える