我想创建一个动态壁纸,我希望将底部背景幻灯片与滑动主屏幕页面放在一起,而另一个图层始终位于背景顶部并位于应用程序图标下方。
这可能吗?如何做到这一点?
答案 0 :(得分:1)
您必须覆盖public void onOffsetsChanged (float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset)
使用xOffset
的值,您可以定义一个源矩形,它可以提取部分位图并在屏幕上绘制该部分。
此图片可让您了解xOffset
的工作原理:
假设有5个主屏幕页面,
如果您的图片尺寸为960 x 800(宽x高),并且每次想要绘制尺寸为480 x 800的部分,那么您可以定义一个坐标为源矩形:
x1 = xOffset * (960 - 480); y1 = 0; x2 = x1 + 480, y2 = 800;
然后,您的目标矩形将是您要绘制到的屏幕部分。
然后,您可以使用public void drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)
方法将位图绘制到屏幕上。
我很久以前就使用过这种技术。在发布之前我没有在代码中检查这个,并且可能有替代方法(比如使用canvas.translate())。但希望这可以帮助你开始。 :)