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

#android #size #scaling #wallpaper #homescreen

#Android #размер #масштабирование #Обои #рабочий стол

Вопрос:

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

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

Я сделал это с изображениями в формате png размером 1280х1084, а также попробовал то же самое с изображениями размером 320х240, и все они отображаются одинакового размера при установке в качестве обоев главного экрана.

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

Я уверен, что должна быть какая-то настройка 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();
    }
}
  

Действительно,
Эмад

Комментарии:

1. что значит «отображается того же размера»? вы имеете в виду, что оба изображения равны по размеру друг другу, или вы имеете в виду, что они по-прежнему имеют тот размер, который у них был до того, как вы установили их в качестве обоев? т.е. 1280×1024 и 320×240 соответственно?

2. При установке в качестве обоев изображение увеличивается до размера, определенного Android, если оно 320×240, и уменьшается, если оно 1280х1024. Я бы хотел, чтобы Android масштабировал изображение точно так же, как это происходит, когда пользователь использует «меню» -> «обои» для установки обоев из прилагаемых системных обоев. Возможно, мои файлы изображений должны быть того же размера, что и системные обои, прежде чем пользователь запустит мое приложение для установки обоев?

Ответ №1:

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

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

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

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

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