没有显示启动活动

时间:2018-04-08 19:23:48

标签: android

我在SplashActivity之前为5500毫秒制作了MainActivity。但是当应用程序运行时,它只显示2秒的白色屏幕,然后跳转到MainActivity。没有显示错误,但没有启动画面设计或动画或任何其他内容。

以下是AndroidManifest.xml中的活动:

<application
   android:allowBackup="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@style/AppTheme">
   <activity android:name=".SplashActivity"></activity>
   <activity
      android:name=".MainActivity"
      android:label="@string/app_name"
      android:launchMode="singleTask">
      <intent-filter>
         <action android:name="android.intent.action.MAIN" />
         <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
   </activity>
</application>

这是我的SplashActivity

import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

public class SplashActivity extends AppCompatActivity {
    TextView appName;
    Animation frombottom;

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

        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                startActivity(intent);
                finish();
            }
        }, 5500);

        appName = (TextView) findViewById(R.id.appName);
        frombottom = AnimationUtils.loadAnimation(this, R.anim.frombottom);
        appName.setAnimation(frombottom);
    }
}

可能出现的问题和解决办法是什么?提前感谢您的建议。

3 个答案:

答案 0 :(得分:2)

在Launcher中,您调用了MainActivity,这就是启动屏幕打开的原因

<application
  android:allowBackup="true"
  android:icon="@drawable/ic_launcher"
  android:label="@string/app_name"
  android:theme="@style/AppTheme">
  <activity android:name=".MainActivity" android:launchMode="singleTask"></activity>
  <activity
    android:name=".SplashActivity">
    <intent-filter>
       <action android:name="android.intent.action.MAIN" />
       <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
 </activity>
</application>

答案 1 :(得分:0)

需要更改清单文件

    <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme">
    <activity android:name=".SplashActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTask">

    </activity>
</application>

答案 2 :(得分:-1)

Activity做一个&#34;修复&#34;启动画面不是正确的方法。

使用drawable或从xml中创建一个,例如(bg_launch.xml):

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <color android:color="@color/primary"/>
    </item>
    <item
        android:drawable="@mipmap/ic_launcher"
        android:gravity="center"/>
</layer-list>

从你的主题创建一个启动主题

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

然后从您的清单将此主题应用于您的主要活动

<activity
     android:name=".MainActivity"
     ...
     android:theme="@style/AppTheme.Launcher">
...

当应用程序从您的主Activity

开始时,最后还原您的默认主题
@Override
void onCreate(savedInstanceState: Bundle){
    setTheme(R.style.AppTheme)
    super.onCreate(savedInstanceState)
}

这样做你没有白屏延迟,如果你需要动画或翻译文本,你仍然可以选择Activity启动画面,但是你会得到这个缺点在它实际呈现给用户之前的延迟。