2016-05-13 143 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); 
    } 
} 

但这个启动画面持续时间只是随机团队内选择。 我们知道,一般来说,Splash屏幕并非在Android应用生态系统中所鼓励的,但由于这是我们的应用程序的需求,因此它已得到实施。

我的问题:是否有任何标准的Android指南/最佳实践选择正确的启动画面持续时间?

+0

如果你不这样做在那些3秒东西,为什么还要表现出来? *这是我们应用的需求,*需要什么? –

+0

*是否有任何标准的Android指南/选择正确的启动画面持续时间*的最佳做法。正如你所说,这不是鼓励,为什么你期望最佳做法*不鼓励* – Blackbelt

+0

@Blackbelt因为它在Android这种常见的习语,因此!但是,如果没有这样的基准,那就OK了。 – AADProgramming

回答

2

更好的选择是使用具有自定义主题的启动画面活动来启动主要内容活动。有了这个,就不需要使用定时器,因为它在应用程序准备就绪时切换到主要内容,同时显示主题内的图片。

这里是教程如何做到这一点 - https://www.bignerdranch.com/blog/splash-screens-the-right-way/

主要部件从教程:

<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> 

甚至可以将样式添加到应用程序,而无需使用单独的活动。

+0

我可以看到,没有标准。这似乎是什么应该是闪屏的持续时间。因此我们可能会使用另一种方法来解决问题,我想您的解决方案看起来适合这种情况。 – AADProgramming

0

Google准则非常清晰。 只有必要时才使用启动画面。 (如果您没有任何要显示给用户的内容)只有在显示一些数据之前,它才应该可见。 如果你通过谷歌应用程序,你会非常后方看到splashscreen。 有很多更聪明的方法来品牌您的应用程序。 你可以找到更多的数据here

+0

'...只有当您必须时'这就是我们为什么这么做的主要原因。 I.e .:在应用程序启动之前加载图形或创建数据库**。 –

+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

有时候,这是**需要**。 I.e .:在应用程序启动之前加载所有图形或创建数据库。 –

+0

如果不必要地使用,它可能是坏的,但在某些情况下,它是需要的,而且它可以用来加强你的品牌,显然如果使用正确的方式! – varunkr

+0

但是,如果有必要的话**,这是大多数有意识的开发者的情况**? –