Saya mencoba untuk menghamparkan dua gambar di aplikasi saya, tetapi mereka tampaknya macet di canvas.setBitmap()
baris saya . Apa yang saya lakukan salah?
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);
}
Jawaban:
Anda dapat melewati manipulasi Canvas yang rumit dan melakukan ini sepenuhnya dengan Drawable, menggunakan
LayerDrawable
. Anda memiliki salah satu dari dua pilihan: Anda dapat menentukannya dalam XML lalu mengatur gambarnya, atau Anda dapat mengonfigurasinya secaraLayerDrawable
dinamis dalam kode.Solusi # 1 (melalui XML):
Buat file XML Drawable baru, sebut saja
layer.xml
:Sekarang atur gambar menggunakan Drawable itu:
Solusi # 2 (dinamis):
(Saya belum menguji kode ini sehingga mungkin ada kesalahan, tetapi garis besar umum ini seharusnya berfungsi.)
sumber
ok asal tahu saja ada program di luar sana yang disebut DroidDraw. Ini dapat membantu Anda menggambar objek dan mencobanya satu di atas yang lain. Saya mencoba solusi Anda tetapi saya memiliki animasi di bawah gambar yang lebih kecil sehingga tidak berhasil. Tapi kemudian saya mencoba untuk menempatkan satu gambar dalam tata letak relatif yang seharusnya berada di bawah terlebih dahulu dan kemudian di atasnya saya menggambar gambar lain yang dianggap overlay dan semuanya bekerja dengan baik. Jadi RelativeLayout, DroidDraw dan Anda siap melakukannya :) Sederhana, tidak ada pockery jiggery apa pun :) dan berikut adalah sedikit kode untuk ya:
Logo tersebut akan berada di atas gambar latar belakang shazam.
sumber
Anda dapat menggunakan kode di bawah ini untuk menyelesaikan masalah atau mengunduh demo di sini
Buat dua fungsi untuk menangani masing-masing.
Pertama, kanvas digambar dan gambar digambar di atas satu sama lain dari titik (0,0)
Saat tombol klik
Berfungsi untuk membuat overlay.
Baca lebih lajut
sumber
Jawabannya agak terlambat, tetapi mencakup penggabungan gambar dari url menggunakan Picasso
MergeImageView
xml
Contoh
sumber
ini solusi saya:
penggunaan:
atau
dan hasilnya:
Mode overlay:
Mode layar:
sumber