我正在尝试以一种从左到右但以循环方式移动的方式对图像(用作背景图像但它并不重要)进行动画处理。例如,如果图像大小与视图大小完全相同,则一旦最右侧的像素列超过右边缘,它将出现在视图的最左侧。
我已经想到了几种方法,但所有这些方法对我来说都太复杂了,我相信还有一种更“核心”的方法可以做到这一点。
谢谢,里奥。
如果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;
}
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.