0
我有一個尺寸爲400 x 70像素的位圖。我想將該位圖向上滾動一行,並用新像素填滿第70行。 我試圖通過將位圖複製到IntBuffer來滾動位圖,將其複製到另一個IntBuffer(從第二行開始),然後將其寫回位圖。 這可行,但它需要很多的CPU功率,它有點慢。 有沒有更快的方法來做到這一點?Android - 在自定義視圖中滾動位圖
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;
}
謝謝你的幫助。你給了我一個很好的提示。我現在正在使用第二個畫布,並帶有一個底部位圖,並使用以下參數進行滾動:canvas1.drawBitmap(bitmap,0,-2,null); \t canvas.drawBitmap(bitmap,0,0,p); – catostay 2011-05-08 20:24:43
如果你在一個屬於視圖的畫布上滾動一個較小的區域,那麼你可以使用canvas.drawBitmap(bitmap,fromRect,toRect,null);其中fromRect = new Rect(0,0,bitmap.getWidht(),bitmap.getHeight())和toRect = new Rect(x,y,x + w,y + h);即畫布上的矩形。用這種方法可以避免使用新的canvas1 – Lumis 2011-05-08 21:31:32