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