2009-08-25 25 views
3

我想寫一個應用程序,這將允許我將多個圖像呈現到Android中的ImageView上。我可以找到用單個位圖填充它的方法。但是,似乎沒有辦法讓兩個圖像在ImageView中呈現(每個佔用一半的渲染空間)。任何幫助將是真正的欣賞。在Android中ImageView中渲染兩個圖像?

謝謝, De Costo。

回答

4

您可以嘗試從多個圖像創建一個位圖。

您可以嘗試使用原始數據,將圖像中的像素數據提取爲32位int ARGB像素數組,合併成一個大數組,然後使用位圖的方法創建一個新的位圖類像copyPixelsToBuffer(),createBitmap()和setPixels()。

我想你也可以通過使用直接壓縮格式的數據和流以及BitmapFactory類的方法(如decodeByteArray())來實現。

如果您不是一次使用太多圖像,您可以使用單獨的ImageView並回收它們/重新加載資源。我最近有類似這樣的經歷,但是可以完成。

祝你好運。

5

你真的想在這裏完成什麼?

如果您正在嘗試編寫遊戲,請考慮SurfaceView

如果您試圖讓多個圖像堆疊顯示,請考慮FrameLayout

否則,您將不得不尋找第三方JAR,這將允許您在Android之外合併您的圖像,然後將合成圖像放入您的ImageView

2

我寫了這個方法來合併小的位圖。這不是非常有效,但爲了簡單的應用目的,它似乎工作正常。本示例僅將基礎圖像上的重疊圖像居中。

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