Estou tentando sobrepor duas imagens em meu aplicativo, mas elas parecem travar na minha canvas.setBitmap()
linha. O que estou fazendo de errado?
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);
}
Respostas:
Você pode pular a manipulação complexa do Canvas e fazer isso inteiramente com Drawables, usando
LayerDrawable
. Você tem uma das duas opções: Você pode defini-lo em XML e simplesmente definir a imagem ou pode configurar umLayerDrawable
dinamicamente no código.Solução nº 1 (via XML):
Crie um novo arquivo XML Drawable, vamos chamá-lo
layer.xml
:Agora defina a imagem usando esse Drawable:
Solução # 2 (dinâmica):
(Eu não testei este código, então pode haver um erro, mas este esboço geral deve funcionar.)
fonte
ok, só para você saber que existe um programa chamado DroidDraw. Pode ajudá-lo a desenhar objetos e experimentá-los um em cima do outro. Tentei sua solução, mas tinha animação sob a imagem menor, então não funcionou. Mas então tentei colocar uma imagem em um layout relativo que deveria estar embaixo primeiro e depois em cima desenhei a outra imagem que deveria se sobrepor e tudo funcionou muito bem. Então RelativeLayout, DroidDraw e você está pronto para ir :) Simples, sem nenhum tipo de pockery jiggery :) e aqui está um pouco de código para você:
O logotipo ficará em cima da imagem de fundo do shazam.
fonte
Você pode usar o código abaixo para resolver o problema ou baixar a demonstração aqui
Crie duas funções para lidar com cada uma.
Primeiro, a tela é desenhada e as imagens são desenhadas uma sobre a outra a partir do ponto (0,0)
Clique no botão
Função para criar uma sobreposição.
Consulte Mais informação
fonte
É um pouco tarde a resposta, mas cobre a fusão de imagens de urls usando o Picasso
MergeImageView
xml
Exemplo
fonte
esta é a minha solução:
uso:
ou
e os resultados:
Modo de sobreposição:
Modo de tela:
fonte