目前,我的应用程序加载启动屏幕并保持这种状态。我认为我的主要问题是 Android 生命周期。我将启动页面作为 onCreate,主要 Activity (从下面的 private Final 开始)也是 onCreate,但我认为这是不正确的。此外,每个 Activity 都在一个 java 文件中。它是否正确?如何加载我的初始页面,终止其自身,然后加载我的主要 Activity ?
这是我的 MainActivity.java:
package com.deliveryfor;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
Thread Timer = new Thread() {
public void run() {
try { sleep(3000);
startActivity (new Intent ("android.intent.action.SPLASH"));
} catch (InterruptedException e) {
e.printStackTrace();
}
finally {
finish();
}
}
};
Timer.start();
}
private final LatLng LOCATION_STATE = new LatLng(49.27645, -122.917587);
private final LatLng LOCATION_CITY = new LatLng(49.187500, -122.849000);
private final LatLng LOCATION_YOU = new LatLng(49.187500, -122.849000);
private GoogleMap map;
protected void onCreate() {
super.onCreate(null);
setContentView(R.layout.activity_main);
map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMyLocationEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void onClick_State(View v) {
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_YOU, 9);
map.animateCamera(update);
}
public void onClick_City(View v) {
map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_CITY, 16);
map.animateCamera(update);
}
public void onClick_You(View v) {
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(LOCATION_STATE, 18);
map.animateCamera(update);
}
}
这是 Menu.java(启动页面):
package com.deliveryfor;
import android.app.Activity;
import android.os.Bundle;
public class Menu extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView (R.layout.splash); }
}
最佳答案
您必须将 Splash Activity 创建为经典 Activity,并且必须在 Manifest
中声明它将是第一个启动的 Activity。
将此行添加到 Activity 启动标记中:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
然后,在 SplashActivity.java
的 onCreate() 中,添加自动启动 MainActivity
的代码。
我像这样使用 TimerTask:
Timer timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
Intent toHomePage = new Intent(context,MainActivity.class);
startActivity(toHomePage);
finish();
}}, 5000);
5000
表示 Intent toHomePage 将在 5 秒后启动。
希望对你有帮助!
关于java - 如何从初始页面过渡到主要 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20077030/