Android - combine multiple images into one ImageView

后端 未结 3 2105
别跟我提以往
别跟我提以往 2020-12-17 00:33

I\'m looking for help developing (or a library) which can allow me to merge together multiple images into one imageview.

My application is grouping together interact

相关标签:
3条回答
  • 2020-12-17 00:58

    You should overlap bitmaps onto another bitmap. A first approach are this:

    Merge bitmaps

    You can play with matrix and orders and sizes for a complex UI.

    0 讨论(0)
  • 2020-12-17 01:22

    You can use MultiImageView.

    Add dependency in app.gradle:

    compile 'com.github.stfalcon:multiimageview:0.1'
    

    Add MultiImageView to layout xml file

    <com.stfalcon.multiimageview.MultiImageView
        android:id="@+id/iv"
        android:layout_width="100dp"
        android:layout_height="100dp"/>
    

    In java class find view by id:

    final MultiImageView multiImageView = (MultiImageView) findViewById(R.id.iv);
    

    For adding image to MultiImageView use method addImage(Bitmap bitmap). For exapple:

    multiImageView.addImage(BitmapFactory.decodeResource(getResources(), R.drawable.avatar1));
    

    For setting shape of MultiImageView use method setShape(MultiImageView.Shape shape).

    multiImageView.setShape(MultiImageView.Shape.RECTANGLE);//Rectangle with round corners
    multiImageView.setShape(MultiImageView.Shape.CIRCLE);//Circle
    multiImageView.setShape(MultiImageView.Shape.NONE);//Without shape
    


    Check github link for more information:

    I think it is what you needed

    0 讨论(0)
  • 2020-12-17 01:23

    i know it's an old question but maybe it will help somebody else.

    private Bitmap mergeThemAll(List<Bitmap> orderImagesList) {
        Bitmap result = null;
        if (orderImagesList != null && orderImagesList.size() > 0) {
            // if two images > increase the width only 
            if (orderImagesList.size() == 2)
                result = Bitmap.createBitmap(orderImagesList.get(0).getWidth() * 2, orderImagesList.get(0).getHeight(), Bitmap.Config.ARGB_8888);
            // increase the width and height 
            else if (orderImagesList.size() > 2)
                result = Bitmap.createBitmap(orderImagesList.get(0).getWidth() * 2, orderImagesList.get(0).getHeight() * 2, Bitmap.Config.ARGB_8888);
            else // don't increase anything 
                result = Bitmap.createBitmap(orderImagesList.get(0).getWidth(), orderImagesList.get(0).getHeight(), Bitmap.Config.ARGB_8888);
    
            Canvas canvas = new Canvas(result);
            Paint paint = new Paint();
            for (int i = 0; i < orderImagesList.size(); i++) {
                canvas.drawBitmap(orderImagesList.get(i), orderImagesList.get(i).getWidth() * (i % 2), orderImagesList.get(i).getHeight() * (i / 2), paint);
            }
        } else {
            Log.e("MergeError", "Couldn't merge bitmaps");
        }
        return result;
    }
    
    0 讨论(0)
提交回复
热议问题