2011-11-09 16 views
1

現在、私はアプリケーションの背景を電話の壁紙として表示しています。いつも壁紙として背景画面を設定するには?

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

しかし何らかの理由で、アイコンを押してアプリケーションを起動したときです。これは、ホーム画面にアイコンが表示されたアクティビティ画面を表示するだけです。私はダイアログを使用しませんでしたが、レイアウトはちょうどそのように設定されているので、ダイアログのように見えます。だから私は、このアクティビティが実行されているときはいつでも壁紙を表示したいだけです。しかし、それは異なるアクティビティに切り替えるなど、次のイベントが発生した後にのみ壁紙を表示します。私はすでにそのコードをonCreate()に置き、いつでも私はsetContentView() .....そのようなことを行う方法があるのでしょうか、まったくないのですか?長い検索や試行錯誤の後

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); 
+0

は二回、それを読んでいません。あなたはスクリーンショットを供給できますか? (おそらく、再描画のためにinvalidate()などの呼び出しのように聞こえるが、実際はわからない)。 – Warpzit

答えて

4

- コード以下

0

使用。私は私が望んでいたものに対する解決策を見つけました。別々のthemes.xmlファイルを作成し、既定のandroid themes.xmlに既に定義されているTheme.Dialogを調整するだけでした。私がしたことは、アニメーションの部分を変更することでした。もともとアンドロイドのthemes.xmlにはこのような行があります。

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

ですが、アンドロイドthemes.xmlで変更すると効果がありません。私はちょうど私が上記のように自分のthemes.xmlを作成し、アンドロイドとして親を設定:Theme.Dialog。このような行を追加しました。

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

このソリューションが他の人に役立つことを祈っています。 APPCOMPATのユーザーの場合

+0

コメントありがとうございますが、私はrl.setBackgroundDrawable(d)行でnullポインタの例外を受け取ります。私はコードをonCreat()に入れ、私のルートノードのidをmain.xmlに追加し、RelativeLayoutをLinearLayoutに変更しました。私はLinearLayout ...からグローバル変数としてrlを宣言しました。 LinearLayout rl; – Jae

+0

私はnullポインタの例外の問題を解決しましたが、そのコードはレイアウトの背景を設定するようです....多分私は前に明確ではなかった...私の活動レイアウトはダイアログのように見えるので、ダイアログのレイアウトを変更し、アクティビティの下にある背景の画面を暗くします...私が望んだのは、ホーム画面のアイコンなしで淡色の画面に壁紙を表示する方法でした。私が提供したコードは、いくつかのイベントが発生した後に動作しますが、アクティビティが発生するとすぐに動作し、アクティビティがアクティブでないか、または単にバックグラウンドで動作しているときにホーム画面に戻るようにします。 – Jae

+0

実際に、私は壁紙マネージャのアンドロイドのドキュメントからそのコードを持っています。私はそのようなシナリオに遭遇しなかった。答えを共有してくれてありがとう:)幸運 – rohit

3

、単にコードは必要、あなたの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> 
関連する問題