1

我正在尝试以一种从左到右但以循环方式移动的方式对图像(用作背景图像但它并不重要)进行动画处理。例如,如果图像大小与视图大小完全相同,则一旦最右侧的像素列超过右边缘,它将出现在视图的最左侧。

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

谢谢,里奥。

4

2 回答 2

2

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

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;
}
于 2012-05-17T19:18:39.530 回答
0

Could you use canvas.drawBitmap(sourceRectangle,outputRectangle,null) to cut a part from a strip bitmap background? This is a similar method that is used to animate a bitmap, but you would add one pixel to the sourceRectangle's left and right values until it hits the edge of the background strip.

于 2012-05-25T00:02:17.427 回答