アプリが起動するために少しのデータが読み込まれます.2秒かかるので、今回はスプラッシュスクリーンを表示します。プログラマティックなテーマの変更が有効でない
私は私がやっているsuper.onCreate
、前setTheme
を使用しているけど、それはMainActivityをロードすると、背景がスプラッシュ画面で、アクションバーがそれに押しつぶさスプラッシュ画面イメージを持っていることを確認するために見ることができるすべてのこと。 - ここで
は私のstyles.xmlは、私はandroid:theme="@style/SplashTheme"
SplashScreen.javaは、私が持っているMainActivity.javaに切り替え、その後、時間がかかり、すべてのコードを実行する必要があり、私のAndroidManifest.xmlで
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:background">@drawable/background_portrait</item>
</style>
<style name="SplashTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:background">@drawable/splashscreen</item>
</style>
です
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
私は何が欠けていますか?また、スプラッシュスクリーンの背景が、いくつかのTextViewやアクションバーのような、他のものの背景になっているようです。
ありがとうございました。
EDITまた、スプラッシュ画面xmlのコードは実行されません。バックグラウンドを読み込んで完了すると、メインアクティビティがロードされますか?
SplashScreen.javaが持っている -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash_screen);
Log.i("Splash Screen", "loading");
mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
// code that takes time
をactivity_splash_screen.xmlがある -
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splashscreen"
tools:context="com.androidandyuk.bikersbestfriend.SplashScreen">
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_gravity="bottom|center_horizontal"
android:layout_margin="32dp"
ads:adSize="BANNER"
ads:adUnitId="@string/banner_ad_unit_id"></com.google.android.gms.ads.AdView>
</FrameLayout>
ドロアブルを 'android:windowBackground'に入れてはいけません。レイアウトのバックグラウンドで再びドロワブルを2回描くと、無駄なパフォーマンスになります。 *** /// ***「時間がかかるコード」は非常に速く、広告は読み込まれないと思う。 *** /// ***テーマを実行時に切り替えるのはなぜですか?マニフェストでは、アクティビティごとにテーマを定義できます。 –
ありがとう、はい、私は実際にマニフェストのテーマを設定していることが分かったので、それを行いました。バックグラウンドを描画する呼び出しをもう一度削除しました。 – AndyCr15