onOffsetsChanged: переместить растровое изображение

Я хочу, чтобы мое растровое изображение, имеющее высоту экрана и большую ширину, чем экран, было бы перемещено немного вправо или влево, если пользователь меняет рабочий стол, чтобы он мог видеть все изображение.

Вот мой код, который работает только частично:

        int x = -1*(int)((xOffset*bmp.getWidth()));
        canvas.drawBitmap(bmp, x, 0, null);

благодарю вас!

1 ответ

Решение

Вы получаете точные значения пикселей через переменные xPixels и yPixels в onOffsetsChanged(). Смотрите мой ответ здесь: Android живые обои масштабирования

Например, в onOffsetsChanged () вы можете установить частную переменную класса

mPixels = xPixels;

Затем, в вашей рутине

holder = getSurfaceHolder();
c = holder.lockCanvas();
c.translate(mPixels, 0f);
// c.drawBitmap ... goes here :-)

Как правило, вам понадобится растровое изображение, в два раза превышающее ширину экрана, а ваши изображения будут отцентрированы по центру. Например: экран шириной 320 пикселей -> 640 пикселей ширины растрового изображения с "центром" от 160 до 480. mPixels будет 0 в крайнем левом экране запуска (из 5), -160 в центре и -320 в крайнем правом экране,

Другие вопросы по тегам