私はAndroidのImageViewに複数の画像をレンダリングできるアプリケーションを作成しようとしています。私はsigleビットマップでそれを設定するメソッドを見つけることができます。しかし、2つの画像をImageViewでレンダリングする方法はないようです(それぞれがレンダリング空間の半分を占めています)。どんな助けでも本当に感謝しています。AndroidのImageViewで2つの画像をレンダリングしますか?
おかげで、 デCosto。
私はAndroidのImageViewに複数の画像をレンダリングできるアプリケーションを作成しようとしています。私はsigleビットマップでそれを設定するメソッドを見つけることができます。しかし、2つの画像をImageViewでレンダリングする方法はないようです(それぞれがレンダリング空間の半分を占めています)。どんな助けでも本当に感謝しています。AndroidのImageViewで2つの画像をレンダリングしますか?
おかげで、 デCosto。
あなたは、複数の画像から1つのビットマップを作成しようとすることができます。
ビットマップのメソッドを使用して、イメージからピクセルデータを32ビットint ARGBピクセル配列として抽出し、1つの大きな配列にマージして新しいビットマップを作成することで、 copyPixelsToBuffer()、createBitmap()、setPixels()などのクラスです。
私は)あなたが直接圧縮形式のデータとストリームとdecodeByteArray(のようなBitmapFactoryクラスのメソッドを使用して、それをも行うことができると思います。
あなたが別のImageViewsを使用してリソースを再ロード/それらをリサイクルすることができ、一度にあまりにも多くの画像を使用していない場合。私は最近のようなものでかなり荒い経験をしましたが、それはできます。
幸運。
あなたは本当にここで何を達成しようとしていますか?
あなたがゲームを書き込もうとしている場合は、SurfaceView
を考えます。
あなたは複数の画像が互いの上に積み重ね表示されていしようとしている場合、FrameLayout
を考えます。
それ以外の場合は、Android以外の画像を結合してから組み合わせた画像をImageView
に入れるサードパーティのJARを見つける必要があります。
小さいビットマップを結合するこのメソッドを作成しました。ひどく効率的ではありませんが、単純なアプリケーション目的のためにうまくいくようです。この例では、単純にオーバーレイ画像をベース画像の中央に配置します。
public static Bitmap mergeImage(Bitmap base, Bitmap overlay)
{
int adWDelta = (int)(base.getWidth() - overlay.getWidth())/2 ;
int adHDelta = (int)(base.getHeight() - overlay.getHeight())/2;
Bitmap mBitmap = Bitmap.createBitmap(base.getWidth(), base.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(mBitmap);
canvas.drawBitmap(base, 0, 0, null);
canvas.drawBitmap(overlay, adWDelta, adHDelta, null);
return mBitmap;
}