ピンチズームを可能にするライブラリである ImageViewTouch を描画しようとしています。Canvas を使用して画像の上に描画することはできますが、画像をズームすると描画が消えてしまいます。
このために、ビューをビットマップに変換し、この同じビューに theImageBitmap を設定しようとしています。コードは次のとおりです。
mImage.setDrawPath(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getWidth(), v.getHeight());
v.draw(c);
return b;
}
これを行うと、次のログ エラーが表示されます。
07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
呼び出しを削除するloadBitmapFromView
と、通常は画像の上に描画が表示されます。画像を操作しようとすると (ズームインやズームアウトなど)、描画が消えて、背景画像 (画像) だけが残ります。
- - 編集 - -
呼び出しの後に追加するコードを次に示しloadBitmapFromView
ます。ケースは次のとおりです。ラジオグループリスナーがあり、ラジオボタンをチェックすると、画像をロードしてその上にいくつかの可能な図面を描画する必要があります..次に、すべて(画像と図面)をのみに変換しようとしています1 つのビットマップ。
コードの他の部分は次のとおりです。
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
その後、描画する必要があるものをすべて描画し、示した loadImageBitmap メソッドを使用してビューをビットマップに変換しようとします。
decodeSampledBitmapFromResource
Android開発者のこのリンクから取得した方法http://developer.android.com/training/displaying-bitmaps/load-bitmap.html