Android: Могу ли я иметь слои в живых обоях? - PullRequest
1 голос
/ 02 марта 2012

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

Возможно ли это и как это можно сделать?

1 Ответ

1 голос
/ 04 марта 2012

Вам придется переопределить public void onOffsetsChanged (float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) Используя значение xOffset, вы можете определить исходный прямоугольник, который извлекает часть вашего растрового изображения и рисует эту часть на экране.

Это изображение должно дать вам понимание того, как работает xOffset: Предполагая, что есть 5 страниц домашнего экрана, android xOffset example Если ваша картинка имеет размер 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 ()). Но, надеюсь, это должно помочь вам начать. :)

...