我在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);
}
}
可能出现的问题和解决办法是什么?提前感谢您的建议。
答案 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
启动画面,但是你会得到这个缺点在它实际呈现给用户之前的延迟。