それで、私はRomain Guyのウィンドウの背景とパフォーマンスの設定に関するRomain Guyの ブログ投稿 を読み、それをエミュレートしようとしています。それはそのような単純な解決策であり、なぜ私がこれを機能させることができないのかはわかりませんが、アクティビティは指示された背景の取得を拒否します。
OnListItemClickが新しいアクティビティを起動するListViewがあります。これは、完全に読み込まれるまで3〜5秒かかります。ユーザーが待機している間にwindowBackgroundを描画して、実際に準備が整う前にアクティビティを「確認」できるようにしたいと思います。これが私のコードです:
起動したアクティビティのAndroidManifestスニペット:
<activity
Android:name=".activity.EditorActivity"
Android:screenOrientation="portrait"
Android:windowBackground="@drawable/background_editor">
EditorActivityのXMLレイアウト:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<TextView
Android:id="@+id/editor"
Android:layout_height="wrap_content"
Android:layout_width="match_parent"
Android:text="Editor" />
</FrameLayout>
そして最後に、マニフェストbackground_editor.xmlに設定されたドローアブル:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:src="@drawable/editor_bg"
Android:tileMode="repeat" />
editor_bgは、ドローアブルフォルダーにある.pngファイルです。
最終的にEditorActivityが起動し、デフォルトの黒い背景に「Editor」テキストが白く表示されます(XMLファイルが正しくロードされていることをテストするために追加しました)。
Android:background = "@ Android:color/transparent"を介してFrameLayoutとTextViewの背景を透明に設定してみましたが、デフォルトで黒の背景に設定されていたかもしれませんが、うまくいきませんでした。
数日が経ちましたが、私は何か単純なことを見逃していると思います...ここで私がしている明らかな間違いはありますか?
プログラムで新しいアクティビティを起動する前に、ウィンドウの背景を設定してみてください。
getWindow().setBackgroundDrawableResource(R.drawable.my_drawable);
私は同じ問題に遭遇し、その日を無駄にしました。 Javaではテーマを設定できません。私の場合のように、コントロールがスプラッシュアクティビティのonCreateに非常に遅れて到着しました。その時まで、黒い画面が表示され続けます。
これにより、マニフェストで指定するテーマからウィンドウを管理する必要があるという手がかりが得られました。
私が持っているマニフェストがあります:
<activity
Android:name=".main.activities.SplashScreen"
Android:theme="@style/Splash"
Android:screenOrientation="portrait">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
今私が作成したテーマは次のとおりです:
<style name="Splash" parent="@style/Theme.AppCompat.Light">
<item name="Android:windowBackground">@drawable/splash</item>
<item name="Android:windowNoTitle">true</item>
<item name="windowNoTitle">true</item>
<item name="colorPrimaryDark">@color/green_09</item>
<item name="colorPrimary">@color/green_09</item>
<item name="windowActionBar">false</item>
</style>
ビットマップリソースを含むドローアブルリソースのスプラッシュ。少し伸ばさずに中央に表示されるように微調整する必要があります。
<bitmap xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:antialias="true"
Android:dither="true"
Android:gravity="fill"
Android:src="@drawable/splash_screen" />
私がこれをstyles.xmlのテーマスタイルで宣言した場合、私にとってはうまくいきます:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto">
<style name="CustomTheme" parent="Android:Theme.Holo.NoActionBar">
<item name="Android:windowBackground">@color/bg_evening</item>
</style>
</resources>
そしてマニフェストでこのテーマを私のアプリケーションに設定しました:
<application
Android:name="com.my_app.pack"
Android:theme="@style/CustomTheme" >
...
または私の活動の1つに:
<activity
Android:name="..."
Android:theme="@style/CustomTheme">
...
複数のテーマスタイルを宣言し、それらのいずれか1つを任意のアクティビティに追加できます。これにより、アプリケーションに設定されたテーマがオーバーライドされます。