Да, вам нужно будет реализовать LayerDrawable
. На StackOverflow есть несколько примеров, как это ниже от overlay two images in android to set an imageview выпуска
Вы можете пропустить сложные манипуляции холста и сделать это полностью с вводимого коэффициента, используя LayerDrawable
. У вас есть один из двух вариантов: Вы можете либо определить его в XML, либо просто установить изображение, либо вы можете динамически настроить код LayerDrawable
.
Решение # 1 (через XML):
Создать новый Drawable файл XML, давайте назовем его layer.xml
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/t" />
<item android:drawable="@drawable/tt" />
</layer-list>
Теперь установите изображение с помощью этого Drawable:
testimage.setImageDrawable(getResources().getDrawable(R.layout.layer));
Решение № 2 (динамическое):
Resources r = getResources();
Drawable[] layers = new Drawable[2];
layers[0] = r.getDrawable(R.drawable.t);
layers[1] = r.getDrawable(R.drawable.tt);
LayerDrawable layerDrawable = new LayerDrawable(layers);
testimage.setImageDrawable(layerDrawable);
(Я еще не проверял этот код, так что может быть ошибка, но этот общий контур должен работать.)
Другим возможным решением может быть от unable to set multiple bitmap in one imageview
вы можете сделать что-то вроде следующего:
public Bitmap drawMultipleBitmapsOnImageView(Bitmap b) {
Bitmap drawnBitmap = null;
try {
drawnBitmap = Bitmap.createBitmap(400, 400, Config.ARGB_8888);
Canvas canvas = new Canvas(drawnBitmap);
// JUST CHANGE TO DIFFERENT Bitmaps and coordinates .
canvas.drawBitmap(b, 100, 100, null);
canvas.drawBitmap(b, 200, 300, null);
canvas.drawBitmap(b, 100, 200, null);
canvas.drawBitmap(b, 300, 350, null);
} catch (Exception e) {
e.printStackTrace();
}
return drawnBitmap;
}
вы вызываете этот метод, как следующее:
ImageView myImageView = (ImageView) findViewById(R.id.myImageView);
Bitmap bitmap = ((BitmapDrawable) myImageView.getDrawable())
.getBitmap();
Bitmap b = drawMultipleBitmapsOnImageView(bitmap);
myImageView.setImageBitmap(b);
Если вы все еще чувствуете, не удовлетворены, посмотрите на Android : How to Draw multiple images inside the same imageview but shifted in the y coordinate?
использовать этот код для шоу 2 изображения в одном изображении:
ImageView myImageView = (ImageView) findViewById(R.id.img1);
Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.call);
Bitmap bitmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.available);
Bitmap combinedBitmap = getCombinedBitmap(pic2, pic1);
myImageView.setImageBitmap(b);
и это getCombinedBitmap() метод:
public Bitmap getCombinedBitmap(Bitmap b, Bitmap b2) {
Bitmap drawnBitmap = null;
try {
drawnBitmap = Bitmap.createBitmap(200, 200, Config.ARGB_8888);
Canvas canvas = new Canvas(drawnBitmap);
// JUST CHANGE TO DIFFERENT Bitmaps and coordinates .
canvas.drawBitmap(b, 0, 0, null);
canvas.drawBitmap(b2, 0, 0, null);
//for more images :
// canvas.drawBitmap(b3, 0, 0, null);
// canvas.drawBitmap(b4, 0, 0, null);
}
catch (Exception e) {
e.printStackTrace();
}
return drawnBitmap;
}
Вы также можете посетить: Draw multiple bitmaps on Imageview
В Интернете вы также найдете несколько руководств, но я не думаю, что представленное там решение сильно отличалось бы от этого выше.
Наконец, как только вы сделали это, чтобы сделать его круг использовать эту библиотеку: https://github.com/hdodenhof/CircleImageView
Надеется, что это поможет
Проверьте этот ответ: http://stackoverflow.com/a/41298499/2504274 Я думаю, что это что вам нужно –