2016-05-13 39 views
2

ユーザーがアプリを開くたびに会社のロゴを表示するためにスプラッシュ画面を使用しています。現在、3秒間のスプラッシュ画面を表示しています。以下はAndroidのスプラッシュ画面の期間

はコードです:

private static int SPLASH_TIME_OUT = 3000;  // Delay of 3 Seconds 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_splash_screen); 


     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       // This method will be executed once the timer is over 
       Intent i = new Intent(SplashScreenActivity.this, AnotheActivity.class); 
       startActivity(i); 
       // close this activity 
       finish(); 
      } 
     }, SPLASH_TIME_OUT); 
    } 
} 

しかし、このスプラッシュ画面期間は、単にランダムにチーム内で選択されています。 私たちは、Androidアプリのエコシステムでは一般的にスプラッシュ画面が奨励されているわけではないことを知っていますが、これはアプリの必要性から実装されているためです。

私の質問:RIGHTスプラッシュ画面の継続時間を選択するための標準Androidガイドライン/ベストプラクティスはありますか?

+0

あなたがそれらの3秒で何もしない場合は、その理由もそれを示して? *これはアプリの必要性、*ニーズは何ですか? –

+0

* RIGHTのスプラッシュ画面の継続時間*を選択するための標準のAndroidガイドライン/ベストプラクティスはありますか?あなたが言ったように、それは奨励されていません、なぜあなたは何かのベストプラクティスが奨励されていない* – Blackbelt

+0

@Blackbeltそのような一般的なイディオム以来、したがって!しかし、そのようなベンチマークがない場合、その大丈夫です。 – AADProgramming

答えて

2

より良い選択肢は、メインのコンテンツアクティビティを開始するカスタムテーマでスプラッシュスクリーンアクティビティを使用することです。これにより、タイマーを使用する必要はありません。アプリケーションが準備完了してメインコンテンツに切り替わり、その間にテーマの中にある画像が表示されます。

<activity 
    android:name=".SplashActivity" 
    android:theme="@style/SplashTheme"> THEME HERE!!! 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 


public class SplashActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 
     finish(); 
    } 
} 

<style name="SplashTheme" parent="Theme.AppCompat.DayNight.NoActionBar"> 
    <item name="android:windowBackground">@drawable/splash</item> 

</style> 


<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item 
     android:drawable="@color/black"/> 

    <item> 

     <bitmap 

      android:gravity="center" 
      android:src="@drawable/logo_image"/> 

    </item> 

</layer-list> 

別のアクティビティを使用することなく、アプリケーションにスタイルを追加することも可能です:チュートリアルからhttps://www.bignerdranch.com/blog/splash-screens-the-right-way/

主要部品 - ここ

はそれを行う方法のチュートリアルです。

+0

はありません。それはスプラッシュスクリーンの持続時間でなければならないと思われる。したがって、私たちはスプラッシュに代わるものを使用するかもしれません。私はあなたのソリューションがそのフィット感に適していると思います。 – AADProgramming

0

Googleのガイドラインはかなり明確です。 スプラッシュ画面を使用する必要がある場合にのみ使用してください。 (ユーザーに何も表示しない場合)表示するデータがあるまで表示されます。 Googleアプリを使用すると、スプラッシュスクリーンが非常に後ろに表示されます。 あなたのアプリをブランド化する方法がはるかに洗練されています。 詳細データはhereです。

+0

'...必要な場合のみ...'私は:**アプリケーションが起動する前に**グラフィックスを読み込むか、データベースを作成する**。 –

+0

すべてがロードされるまで表示します。一定時間表示しないでください。 –

+0

... OPが実際に求めていたものです。 –

0

スプラッシュスクリーンそれは悪い習慣で、スプラッシュスクリーンを使用しないでください。これについての記事を読むことができますlink1link2

android:windowBackgroundをオーバーライドしたカスタムテーマを作成してから使用するよりもスプラッシュを表示する必要がある場合は、super.onCreate()を呼び出す前にそのカスタムテーマを標準テーマに置き換えてください。ここには実装と詳細な説明のtutorialがあります。

あなたはAppThemeと呼ばれるテーマを持っていると仮定すると、あなたのランチャーのテーマは次のようになります。

<style name="AppTheme.Launcher"> <item name="android:windowBackground">@drawable/launch_screen</item> </style>

が次に遷移するandroid:theme="@style/AppTheme.Launcher".

最も簡単な方法を使用してのAndroidManifest.xmlであなたの活動にあなたのテーマを適用します通常のテーマに戻すには、super.onCreate()およびsetContentView()の前にsetTheme(R.style.AppTheme)を呼び出します。

public class MyMainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { // Make sure this is before calling super.onCreate setTheme(R.style.Theme_MyApp); super.onCreate(savedInstanceState); // ... } }

+1

時々、それは**必要**です。すなわち、すべてのグラフィックスをロードするか、またはアプリケーションを開始する前にデータベースを作成する。 –

+0

不必要に使用された場合、それは悪いかもしれませんが、場合によっては必要とされ、さらにブランドを強化するために使用できます。 – varunkr

+0

しかし、**必要な場合は**、ほとんどの**意識的な開発者**の場合ですか? –

関連する問題