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