2017-05-15 1 views
0

アプリが起動するために少しのデータが読み込まれます.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> 
+0

ドロアブルを 'android:windowBackground'に入れてはいけません。レイアウトのバックグラウンドで再びドロワブルを2回描くと、無駄なパフォーマンスになります。 *** /// ***「時間がかかるコード」は非常に速く、広告は読み込まれないと思う。 *** /// ***テーマを実行時に切り替えるのはなぜですか?マニフェストでは、アクティビティごとにテーマを定義できます。 –

+0

ありがとう、はい、私は実際にマニフェストのテーマを設定していることが分かったので、それを行いました。バックグラウンドを描画する呼び出しをもう一度削除しました。 – AndyCr15

答えて

1

テーマにandroid:backgroundを使用しないでください。背景を持たないものは、これを継承します。

android:windowBackgroundを設定することを意味します。

+0

恐縮です。 – AndyCr15

+0

activity_splash_screen.xmlに実際に何が表示されていないのかも知っていますか?それは背景だけを表示し、他のレイヤは表示しません。ありがとう。 – AndyCr15

+0

@ AndyCr15質問の最後に、レイヤードローブブルとネストされたドロワーブルを投稿してください。 –

関連する問題