我试图动画的图像(用作背景图像,但它并不重要),以这样一种方式,它会从左至右,但以循环方式移动。 例如,如果图像尺寸是完全一样的视图尺寸,一旦像素的最右列超过右边缘,它会出现在视图的最左侧。
我认为这样做的几种方法,但所有这些听起来太复杂,我和我敢肯定有一个更“芯”的方式来做到这一点。
谢谢,利奥尔。
我试图动画的图像(用作背景图像,但它并不重要),以这样一种方式,它会从左至右,但以循环方式移动。 例如,如果图像尺寸是完全一样的视图尺寸,一旦像素的最右列超过右边缘,它会出现在视图的最左侧。
我认为这样做的几种方法,但所有这些听起来太复杂,我和我敢肯定有一个更“芯”的方式来做到这一点。
谢谢,利奥尔。
你可以使用canvas.drawBitmap(sourceRectangle,outputRectangle,null)
来切断从带位图背景的一部分? 这是用来制作动画的位图类似的方法,但你会直到它击中的背景带的边缘一个像素添加到sourceRectangle的左边和右边的值。
如果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;
}