Вам придется переопределить public void onOffsetsChanged (float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset)
Используя значение xOffset
, вы можете определить исходный прямоугольник, который извлекает часть вашего растрового изображения и рисует эту часть на экране.
Это изображение должно дать вам понимание того, как работает xOffset
:
Предполагая, что есть 5 страниц домашнего экрана,
Если ваша картинка имеет размер 960 x 800 (ширина x высота) и вы хотите каждый раз рисовать часть размером 480 x 800, вы можете определить исходный прямоугольник, координаты которого будут:
x1 = xOffset * (960 - 480); y1 = 0; x2 = x1 + 480, y2 = 800;
Тогда целевой прямоугольник будет той частью экрана, на которую вы хотите нарисовать.
Затем вы можете использовать метод public void drawBitmap (Bitmap bitmap, Rect src, Rect dst, Paint paint)
, чтобы нарисовать растровое изображение на экране.
Я использовал эту технику очень давно. Я не проверял это в коде перед публикацией, и могут быть альтернативы (например, использование canvas.translate ()). Но, надеюсь, это должно помочь вам начать. :)