Можно ли установить обои так же, как это делается с помощью приложения, поставляемого с Android?

В Android есть способ установить обои на домашний экран. Пользователь нажимает «меню», а затем выбирает «обои», чтобы установить обои из системы. Полученное изображение обоев правильно масштабируется как в портретном, так и в ландшафтном режиме.

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

Я сделал это с изображениями PNG размером 1280x1084, а также попробовал то же самое с изображениями размером 320x240, и все они отображаются одинакового размера, когда они установлены в качестве обоев домашнего экрана.

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

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

Заранее спасибо.

Вот код, который я использую для установки обоев:

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    WallpaperManager myWallpaperManager = WallpaperManager
            .getInstance(getApplicationContext());

    try {
        myWallpaperManager.setResource(R.drawable.kabanight1);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Верно, Эмад


person Emad-ud-deen    schedule 15.10.2011    source источник
comment
как вы имеете в виду показанный тот же размер? Вы имеете в виду, что оба изображения равны по размеру друг другу, или вы имеете в виду, что они по-прежнему имеют тот же размер, что и до того, как вы установили их в качестве обоев? то есть 1280х1024 и 320х240 соответственно?   -  person davogotland    schedule 15.10.2011
comment
При установке в качестве обоев изображение увеличивается до размера, определенного Android, если оно 320x240, и уменьшается, если оно 1280x1024. Я хотел бы, чтобы Android масштабировал изображение так же, как когда пользователь использует меню -> обои, чтобы установить обои из поставляемых системных обоев. Может быть, мои файлы изображений должны быть того же размера, что и изображения системных обоев, прежде чем пользователь запустит мое приложение для установки обоев?   -  person Emad-ud-deen    schedule 15.10.2011


Ответы (1)


Я просто смотрел на это. Хотя вы можете увидеть фактические размеры файлов из изображений обоев в .apk Launcher, лучший способ — запросить у WallpaperManager желаемый размер (который не зависит от ориентации).

final WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
final int fullWidth = wallpaperManager.getDesiredMinimumWidth();
final int fullHeight = wallpaperManager.getDesiredMinimumHeight();

В этот момент я создаю новое растровое изображение точно требуемого размера и записываю в него свое собственное растровое изображение. Сложная часть — вычисление отступов и масштабирования, а также учет строки состояния. Однако, как только вы напишете это изображение нужного размера в качестве обоев, оно должно работать точно так же, как системные обои.

Теперь обратная сторона — это изображение (с размерами больше вашего экрана) масштабируется правильно, но вы заметите, что оно обрезается по-разному в зависимости от вашей ориентации.

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

person ProjectJourneyman    schedule 13.12.2011