我在开始主要活动之前使用启动画面。我目前使用活动主题方法编码我的启动画面,而不是使用布局方法。我的代码中的所有内容在.java和.xml文件中看起来都很好(根据软件)因为我没有错误每次我在模拟器中单击应用程序图标时,它会显示启动画面然后应用程序退出而不显示我的主要活动。到目前为止,这是我的代码:
SplashActivity.java
package com.example.healthylife;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}
MainActivity.java:
package com.example.healthylife;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
这是我的manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.healthylife" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".SplashActivity"
android:label="@string/app_name"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
非常感谢任何建议。
答案 0 :(得分:0)
两件事:
不要立即启动MainActivity。添加延迟,例如使用处理程序。 (在你的Splash的onCreate里面)
new Handler()。postDelayed(new Runnable(){
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}, 1000);
答案 1 :(得分:0)
您可以在一个应用中只有一个启动器活动,因此从mainactivity移除清单的启动器/ intentfilter,然后在启动画面中添加处理程序以延迟几秒钟。
以下是代码: -
Handler handle=new Handler();
handle.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent =new
Intent(Splash_Screen.this,MainActivity.class);
startActivity(intent);
Splash_Screen.this.finish();
}
},2000);
答案 2 :(得分:0)
予。声明自定义drawable.xml文件,其中包含用于启动屏幕背景的项目。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/blue"/>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/logo"/>
</item>
</layer-list>
II。使用新的drawable作为背景在styles.xml中声明自定义样式。
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/background_splash</item>
</style>
如果您的API级别高于v19,则可以将状态栏和导航栏半透明设置属性android:windowTranslucentStatus
和android:windowTranslucentNavigation
设置为true。
III。通过android:theme
文件中的AndroidManifest.xml
属性将此样式应用于您的启动活动。
<activity
android:name=".SplashActivity"
android:theme="@style/SplashTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 3 :(得分:-1)
在明显变化中:
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
在类别代码中使用 DEFAULT 。
延迟你可以使用处理程序:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Intent i = new Intent(SplashScreen.this, MainActivity.class);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
答案 4 :(得分:-1)
Try This:
SplashScreen.java:
public class SplashScreenActivity extends Activity{
protected int _splashTime = 5000;
IabHelper mHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
//splashTread.start();
TimerTask task=new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.d("init","splashcreenact-start");
Log.d("init","splashcreenact-loaded");
Intent actStudyWords = new Intent(getApplicationContext(), List.class);
startActivityForResult(actStudyWords,1);
Log.d("init","splashcreenact-end");
}
};
Timer timer=new Timer();
timer.schedule(task, _splashTime);
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (resultCode == RESULT_OK)
{
finish();
}
}
}
List.java
public class List extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlyt);
}}