0

我查看了 H&M Android 应用程序并试图弄清楚如何实现一些小部件。谁能知道这个图像框架是如何实现的?我可以猜到它使用openGL。

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

4

2 回答 2

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)。

油漆只是颜色设置为白色的油漆。

于 2013-02-06T10:58:36.043 回答
1

一个透明的png框架?这也可能是九个补丁!

于 2013-02-04T00:01:06.003 回答