在Android中的ImageView中渲染两个图像?

时间:2009-08-25 17:28:27

标签: android

我正在尝试编写一个应用程序,这将允许我将多个图像渲染到Android中的ImageView上。我可以找到用sigle位图填充它的方法。但是,似乎没有办法在ImageView中渲染两个图像(每个渲染空间的一半)。任何帮助都会非常感激。

谢谢, De Costo。

3 个答案:

答案 0 :(得分:5)

你真的想在这里完成什么?

如果您正在尝试编写游戏,请考虑SurfaceView

如果您尝试将多个图像叠加在一起,请考虑FrameLayout

否则,您必须找到第三方JAR,它允许您将图像合并到Android之外,然后将合并后的图像放入ImageView

答案 1 :(得分:4)

您可以尝试从多个图像创建一个位图。

您可以尝试使用原始数据,通过从图像中提取像素数据作为32位整数ARGB像素数组,合并为一个大数组,并使用Bitmap类的方法创建新的位图像copyPixelsToBuffer(),createBitmap()和setPixels()。

我认为您也可以通过使用直接压缩格式数据和流以及BitmapFactory类的方法(如decodeByteArray())来实现。

如果您不是一次使用太多图像,则可以使用单独的ImageView并回收它们/重新加载资源。我最近遇到过类似的事情,但是可以做到。

祝你好运。

答案 2 :(得分: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;
}