#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();
На этом этапе я создаю новое растровое изображение точного требуемого размера и записываю в него свое собственное растровое изображение. Сложная часть — это вычисление отступов и масштабирование, а также учет строки состояния. Однако, как только вы напишете это изображение правильного размера в качестве обоев, оно должно работать точно так же, как системные обои.
Теперь обратная сторона — это изображение (с размерами больше вашего экрана) масштабируется правильно, но вы заметите, что оно обрезается по-разному в зависимости от вашей ориентации.
Я думаю, вам понадобятся живые обои, если вы хотите изменить размер изображения в зависимости от ориентации (чтобы увеличить размер изображения, но не обрезать его).