Android how to create the stack kind of image back

2020-03-25 16:59发布

问题:

I am developing an App where i need to create Albums and display them in a GridView. Now i am just displaying them without any background but i need a background for the Album cover so that it looks like a pile of photos. Background something like this:

I tried out this but not it's working:

first i created a single background like this:

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <solid android:color="#FFFFFF" />

    <stroke
        android:width="1dp"
        android:color="#000000" />

    <padding
        android:bottom="1dp"
        android:left="1dp"
        android:right="1dp"
        android:top="1dp" />

</shape>

And then i used a layer-list to draw the stack with rotation:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <rotate
        android:drawable="@drawable/thumb_bg"
        android:fromDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="100" />
    <rotate
        android:drawable="@drawable/thumb_bg"
        android:fromDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="110" />
    <rotate
        android:drawable="@drawable/thumb_bg"
        android:fromDegrees="90"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="120" />

</layer-list>

回答1:

Place a your album thumb over a dummy image(which contains 2 or 3 images in diff allign).



回答2:

I use bitmap to create the stack view and show it in a imageview. You can based on this to save the bitmap is resource then add it in the gridview or use it in gridview adapter in getView I think.

Bitmap m1c = BitmapFactory.decodeResource(getResources(), R.drawable.cat_13);
Bitmap m2c = BitmapFactory.decodeResource(getResources(), R.drawable.cat_13);


int w = m1c.getWidth();
int h = m1c.getHeight();

Matrix mtx = new Matrix();
mtx.postRotate(4);
Bitmap rotatedBMP = Bitmap.createBitmap(m1c, 0, 0, w, h, mtx, true);

Matrix mtx2 = new Matrix();
mtx2.postRotate(-4);

Bitmap rotatedBMP2 = Bitmap.createBitmap(m1c, 0, 0, w, h, mtx2, true);


Canvas comboImage = new Canvas(rotatedBMP);
comboImage.drawBitmap(rotatedBMP2, -10 , -10 , null);
comboImage.drawBitmap(m2c, 10 , 10 , null);

ImageView image = (ImageView) findViewById(R.id.imageView1);
image.setImageBitmap(rotatedBMP);