2012-03-29 16 views
0

私はImageViewから派生したクラスを持っています。 onDrawメソッドのオーバーライドでは、ビューの内容をビットマップにコピーする必要があります。コピーには、目に見える部分だけでなく内容全体を含める必要があります。Viewのコンテンツのサイズを取得する方法

これを達成するには、ビットマップを作成し、super.onDrawを呼び出して、このビットマップのキャンバスをパラメータとして渡します。私は結果のビットマップをonDrawが渡されたキャンバスに描画します。コードは以下の通りです。

私の質問は、私のビットマップの大きさはどれくらいですか?現在、私はgetWidth()getHeight()をビットマップのディメンションとして使用しています。しかし、これは、内容のサイズではなくビューのサイズを返すため、機能しません。ビューのscaleTypeに従って、ドロウアブルのサイズを変更した後のコンテンツのサイズを取得する方法を探しています。

ドロアブルが内容の寸法と異なる可能性があるため、ドロアブルのサイズが機能しません。

 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     if (_bitmap == null) 
     { 
      final int w = getWidth(); 
      final int h = getHeight();
_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); _canvas = new Canvas(_bitmap);
super.onDraw(_canvas); } canvas.drawBitmap(_bitmap, 0, 0, null); }

+0

何が質問ですか?コードは動作していませんか? – noob

+0

質問を編集してタイトルを変更しました – akonsu

答えて

0

を推測getIntrinsicWidthを呼び出す必要があります

は、このビューの描画がキャッシュされたビットマップを返します(ブールオートスケール)

getDrawingCacheに見たことが。

autoScaleをtrueに設定します。

0

あなたが測定とレイアウト後の寸法を得るこの方法です。あなたは基礎となるDrawableのを取得し、私は

+0

ありがとうございますが、これはうまくいかず、私は明確にするために質問を編集しました – akonsu

関連する問題