Я пытаюсь наложить два изображения в своем приложении, но кажется, что они не работают на моей canvas.setBitmap()
строке. Что я делаю не так?
private void test() {
Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.t);
Bitmap mBitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.tt);
Bitmap bmOverlay = Bitmap.createBitmap(mBitmap.getWidth(), mBitmap.getHeight(), mBitmap.getConfig());
Canvas canvas = new Canvas();
canvas.setBitmap(bmOverlay);
canvas.drawBitmap(mBitmap, new Matrix(), null);
canvas.drawBitmap(mBitmap2, new Matrix(), null);
testimage.setImageBitmap(bmOverlay);
}
Ответы:
Вы можете пропустить сложные манипуляции с Canvas и сделать это полностью с помощью Drawables, используя
LayerDrawable
. У вас есть один из двух вариантов: вы можете либо определить его в XML, а затем просто установить изображение, либо вы можете настроить егоLayerDrawable
динамически в коде.Решение №1 (через XML):
Создайте новый файл XML с возможностью рисования, назовем его
layer.xml
:Теперь установите изображение, используя этот Drawable:
Решение №2 (динамическое):
(Я не тестировал этот код, поэтому может быть ошибка, но эта общая схема должна работать.)
источник
хорошо, просто чтобы вы знали, что есть программа под названием DroidDraw. С его помощью вы можете рисовать объекты и примерять их друг на друга. Я пробовал ваше решение, но у меня была анимация под меньшим изображением, поэтому это не сработало. Но затем я попытался поместить одно изображение в относительный макет, который предположительно должен быть первым, а затем поверх него я нарисовал другое изображение, которое предполагается наложить, и все сработало отлично. Итак, RelativeLayout, DroidDraw, и вам все в порядке :) Просто, без всякого вздора :) и вот вам небольшой код:
Логотип будет поверх фонового изображения Shazam.
источник
Вы можете использовать приведенный ниже код для решения проблемы или загрузить демо здесь
Создайте две функции для обработки каждой.
Сначала рисуется холст, и изображения рисуются друг над другом из точки (0,0)
При нажатии кнопки
Функция для создания наложения.
Читать далее
источник
Это немного запоздалый ответ, но он касается слияния изображений с URL-адресов с помощью Picasso.
MergeImageView
xml
пример
источник
это мое решение:
использование :
или
и результаты:
Режим наложения:
Режим экрана:
источник