Android的 - 在环路背景图像动画(Android - Background Image An

2019-10-16 17:12发布

我试图动画的图像(用作背景图像,但它并不重要),以这样一种方式,它会从左至右,但以循环方式移动。 例如,如果图像尺寸是完全一样的视图尺寸,一旦像素的最右列超过右边缘,它会出现在视图的最左侧。

我认为这样做的几种方法,但所有这些听起来太复杂,我和我敢肯定有一个更“芯”的方式来做到这一点。

谢谢,利奥尔。

Answer 1:

你可以使用canvas.drawBitmap(sourceRectangle,outputRectangle,null)来切断从带位图背景的一部分? 这是用来制作动画的位图类似的方法,但你会直到它击中的背景带的边缘一个像素添加到sourceRectangle的左边和右边的值。



Answer 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;
}


文章来源: Android - Background Image Animation in Loop