Android - 循环中的背景图像动画

时间:2012-05-17 19:04:16

标签: android animation

我正在尝试为图像设置动画(用作背景图像,但这并不重要),以便它将从左向右但以循环方式移动。 例如,如果图像大小与视图大小完全相同,则一旦最右边的像素列超出右边缘,它就会出现在视图的最左侧。

我已经想到了几种方法,但是对我来说这些方法听起来都太复杂了,我确信有更“核心”的方法可以做到这一点。

谢谢, 利奥尔。

2 个答案:

答案 0 :(得分:2)

如果BitmapImageView的像素大小完全相同,您可以根据需要手动移动像素。

int pixels[];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());
shiftPixels(pixels, width, height);
bitmap.setPixels(pixels, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.setWidth());

shiftPixels中,只需创建原始位图的副本,但在复制像素时,会对像素应用线性移位。像这样的东西(未经测试的伪代码);

void shiftPixels(int inPixels[], int bitmapHeight, int nPixHorizShift)
{

    int shift = bitmapHeight * nPixHorizShift;
    int outPixels[inPixels.size()];

    for i = 1:pixels.size()
       outPixels[(i + shift) % outPixels.size()] = inPixels[i];

    inPixels = outPixels;
}

答案 1 :(得分:0)

您可以使用canvas.drawBitmap(sourceRectangle,outputRectangle,null)从条带位图背景中剪切一部分吗?这是一种用于为位图设置动画的类似方法,但您可以在sourceRectangle的左右值中添加一个像素,直到它到达背景条的边缘。