画像(背景画像として使用されますが、実際には問題ではありません)を、左から右に循環的に移動するようにアニメーション化しようとしています。たとえば、画像サイズがビューサイズとまったく同じである場合、ピクセルの右端の列が右端を超えると、ビューの左端に表示されます。
私はそれを行うためのいくつかの方法を考えましたが、それらのすべては私には複雑すぎるように聞こえます、そしてそれを行うためのより「コア」な方法があると確信しています。
ありがとう、リオール。
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;
}
canvas.drawBitmap(sourceRectangle,outputRectangle,null)
ストリップビットマップの背景からパーツを切り取るために使用できますか?これは、ビットマップをアニメーション化するために使用されるのと同様の方法ですが、背景ストリップの端に当たるまで、sourceRectangleの左右の値に1ピクセルを追加します。