Как установить фоновый экран в качестве обоев все время? - PullRequest
1 голос
/ 09 ноября 2011

В настоящее время я использую это для отображения фона своего приложения в качестве обоев для телефона.

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER,
                     WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);

Но по какой-то причине, когда я запускаю свое приложение, нажимая значок.Он просто показывает экран активности с иконками на главном экране.Я не использовал диалог, но он выглядит как диалог, потому что макет просто настроен таким образом.Поэтому я просто хочу показывать обои всякий раз, когда выполняется это действие.Но обои отображаются только после следующего события, например, перехода к другой активности.Я уже поставил этот код на onCreate(), и всякий раз, когда я делаю setContentView() ..... Есть ли способ сделать это или просто нет способа?

Ответы [ 3 ]

4 голосов
/ 14 июня 2015

Для пользователей AppCompat просто используйте в файле styles.xml следующее, код не нужен:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:colorBackgroundCacheHint">@null</item>
    <item name="android:windowShowWallpaper">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>
3 голосов
/ 10 ноября 2011

После долгих поисков и проб и ошибок. Я нашел решение для того, что я хотел. Он просто создавал отдельный файл themes.xml и просто настраивал Theme.Dialog, который уже определен в стандартном android themes.xml по умолчанию. Все, что я сделал, это изменил часть анимации. Изначально в android themes.xml строка выглядит следующим образом.

<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>

но, поскольку изменение в android themes.xml не дает эффекта. Я просто создал свой собственный themes.xml, как я уже сказал выше, и просто установил parent как android: Theme.Dialog. И добавил такую ​​строку.

<item name="android:windowAnimationStyle">@android:style/Animation</item>

Спасибо за помощь, и я надеюсь, что это решение поможет другим.

0 голосов
/ 09 ноября 2011

Используйте следующий код -

    rl = (RelativeLayout)findViewById(R.id.someid);
    //relative layout is my root node in main.xml (yours may be linearlayout)
    WallpaperManager wm = WallpaperManager.getInstance(this);
    Drawable d = wm.peekDrawable();
    rl.setBackgroundDrawable(d);// You can also use rl.setBackgroundDrawable(getWallpaper);
...