我有一个400 x 70像素大小的位图。我想将这个位图向上滚动一行,并用新像素填充第70行。 我试图通过将位图复制到IntBuffer来滚动位图,将其复制到另一个IntBuffer(从第二行开始),然后将其写回位图。 这可行,但它需要大量的CPU能力,而且有点慢。 有没有更快的方法来做到这一点?
private Bitmap shift(Bitmap bitmap)
{
buffer.rewind();
buffer1.rewind();
bitmap.copyPixelsToBuffer(buffer);
buffer.position(bitmap.getWidth());
buffer1.put(buffer.array(), bitmap.getWidth()*2, bitmap.getWidth() * bitmap.getHeight());
buffer1.rewind();
bitmap.copyPixelsFromBuffer(buffer1);
return bitmap;
}
答案 0 :(得分:0)
这是使用canvas执行此操作的一种方法:
canvas.drawBitmap(bgr, bgrPosition, 0, null);
canvas.drawBitmap(bgr, 0 - bgrW + bgrPosition, 0, null);
//next value for the background's position
if ( (bgrPosition += bgrDx) > bgrW){
bgrPosition = 0;
}
bgrDx是滚动的速度,尝试bgrDx = 1,而bgrW是bgr位图的宽度。 此方法重复图像并产生无限滚动,但是您需要使用循环图像(两端相同)以使滚动看起来无缝。也许你应该试试这个,看看它是否对你有好处。