Рендеринг двух изображений в ImageView в Android? - PullRequest
3 голосов
/ 25 августа 2009

Я пытаюсь написать приложение, которое позволило бы мне рендерить несколько изображений на ImageView в Android. Я могу найти метод, чтобы заполнить его с растровым изображением сигла. Но, похоже, нет способа получить два изображения для рендеринга в ImageView (каждое занимает половину пространства рендеринга). Любая помощь будет очень благодарна.

Спасибо, Де Косто.

Ответы [ 3 ]

5 голосов
/ 25 августа 2009

Чего вы на самом деле пытаетесь достичь здесь?

Если вы пытаетесь написать игру, рассмотрите SurfaceView.

Если вы хотите, чтобы несколько изображений отображались друг на друге, рассмотрите FrameLayout.

В противном случае вам придется найти сторонний JAR, который позволит вам комбинировать ваши изображения вне Android, а затем поместить объединенное изображение в ваш ImageView.

4 голосов
/ 25 августа 2009

Вы можете попытаться создать одно изображение из нескольких изображений.

Вы можете попытаться сделать это с необработанными данными, извлекая данные пикселей из изображений в виде 32-битных массивов пикселей ARGB int, объединяя их в один большой массив и создавая новый Bitmap, используя методы класса Bitmap как copyPixelsToBuffer (), createBitmap () и setPixels ().

Я думаю, что вы также можете сделать это, используя напрямую сжатые данные формата и потоки и методы класса BitmapFactory, такие как decodeByteArray ().

Если вы не используете слишком много изображений одновременно, вы можете использовать отдельные ImageViews и перерабатывать их / перезагружать ресурсы. У меня был довольно грубый опыт с чем-то подобным в последнее время, но это можно сделать.

Удачи.

2 голосов
/ 01 февраля 2011

Я написал этот метод для объединения небольших растровых изображений. Это не очень эффективно, но для простых приложений оно, кажется, работает нормально. Этот пример просто центрирует оверлейное изображение на базовом изображении.

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...