如何在Android中实现此图像堆栈效果?

时间:2013-02-03 23:34:13

标签: android

我查看了H& M Android应用,并试图找出如何实现一些小部件。 任何人都可以知道这个图像框架是如何实现的? 我可以猜测它使用的是openGL。

https://lh6.ggpht.com/Q-WH9L6rIIPEaEpp2ty0uXH7VqDbVqE_0x2f22o4cjvCHsVm-lTDtfqRkGWRRzywnas

2 个答案:

答案 0 :(得分:1)

透明的png框架?这也可能是9补丁!

答案 1 :(得分:1)

我会猜测;)

首先创建正面图像。在这种情况下,它是通过使用ImageView和TextView对线性布局进行膨胀来构建的。然后将其缓存到位图(在设置阶段,而不是绘制时间)。

在onDraw中,该位图被绘制到屏幕上。然后裁剪画布以避免再绘制该区域。节省了大量的绘图时间,而不是对透明像素进行四重透支。

然后背景画如下:

        for(int i = NUMBER_OF_LAYERS - 1; i > 0; i--) {
            canvas.save();
            float rotation = MAX_ANGLE * shiftModifier * ((float) i / (NUMBER_OF_LAYERS - 1));
            canvas.rotate(rotation, mImageHalfWidth, mImageHalfHeight);
            paint.setAlpha((int) (255f / (2 * i)));
            canvas.drawRect(mBitmap.getBounds(), paint);
            canvas.restore();
        }

NUMBER_OF_LAYERS是背景图层的数量。

MAX_ANGLE是最倾斜图层的旋转角度。

shiftModifier用于为背景图层设置动画。它从零(背景完全隐藏)移动到一个(背景角度= MAX_ANGLE)。

paint只是一个颜色设置为白色的Paint。