Android - 在自定义视图中滚动位图

时间:2011-05-08 02:47:29

标签: android bitmap scroll

我有一个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;
}

1 个答案:

答案 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位图的宽度。 此方法重复图像并产生无限滚动,但是您需要使用循环图像(两端相同)以使滚动看起来无缝。也许你应该试试这个,看看它是否对你有好处。