2012-05-01 17 views
3

私はベクターであるドロアブルオブジェクトを持っています。 ICS強制ハードウェアアクセラレーションのためにクロップできない(または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; 
} 

答えて

7

は、明らかにあなたのDrawableは、実際にBitmapDrawableではありません。 にDrawableを描画する必要があります。あなたの代わりに描画可能の本来の高さ/幅を取得しようとしているのを明示的に希望のサイズを指定することになり、あなたのケースで明らかに

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

:私は別の質問に与えたanswerにこれを参照してください。

+0

ありがとう、私は数時間このことに固執してきました。 –

関連する問題