Java 如何从初始页面过渡到主要活动?
目前,我的应用程序加载启动屏幕并保持这种状态。我认为我的主要问题是Android的生命周期。我将启动页面作为onCreate,主要活动(从下面的private final开始)也是onCreate,但我认为这不正确。此外,每个活动都位于一个java文件中。这是正确的吗?我如何让我的启动页面加载,自杀,然后加载我的主要活动 下面是我的MainActivity.java:Java 如何从初始页面过渡到主要活动?,java,android,eclipse,splash-screen,android-lifecycle,Java,Android,Eclipse,Splash Screen,Android Lifecycle,目前,我的应用程序加载启动屏幕并保持这种状态。我认为我的主要问题是Android的生命周期。我将启动页面作为onCreate,主要活动(从下面的private final开始)也是onCreate,但我认为这不正确。此外,每个活动都位于一个java文件中。这是正确的吗?我如何让我的启动页面加载,自杀,然后加载我的主要活动 下面是我的MainActivity.java: package com.deliveryfor; import android.app.Activity; import an
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);
}
}
public class MainActivity extends AppCompatActivity {
oAuth_Model oAuth_model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
showBasicSplash();
}
private void showBasicSplash() {
new Thread(){
@Override
public void run() {
super.run();
try {
Thread.sleep(1500);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
public void handleMessage(Message m){
if (getBoolean(Constant.AFTERLANG)){
Intent intent = new Intent(MainActivity.this, Landing_three.class);
startActivity(intent);
finish();
}else {
Intent intent = new Intent(MainActivity.this, Activity_Sec.class);
startActivity(intent);
finish();
}
}
};
}
下面是Menu.java(启动页面):
您需要创建启动MainActivity的意图。现在,菜单的代码除了创建它的UI之外什么都不做。描述了如何执行此操作 您将需要以下内容:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
您可能还想重新考虑完全使用闪屏,除非您有令人信服的理由(事实似乎并非如此)。详细信息请阅读帖子。以下是我觉得很有趣的摘录:
启动屏幕可用于在启动前使资源可用
应用程序启动。就我个人而言,我认为98%的人没有必要这样做
案件。它对于积极依赖重负载的应用程序可能很有用
资源,如谷歌地球,天空地图,或游戏,但这不是
适用于简单的实用程序应用程序,如提要阅读器、社交网站
网络应用程序、新闻阅读器等。您不应该需要网络
启动时连接,也不会进行繁重的计算
您需要创建启动MainActivity的意图。现在,菜单的代码除了创建它的UI之外什么都不做。描述了如何执行此操作 您将需要以下内容:
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
您可能还想重新考虑完全使用闪屏,除非您有令人信服的理由(事实似乎并非如此)。详细信息请阅读帖子。以下是我觉得很有趣的摘录:
启动屏幕可用于在启动前使资源可用
应用程序启动。就我个人而言,我认为98%的人没有必要这样做
案件。它对于积极依赖重负载的应用程序可能很有用
资源,如谷歌地球,天空地图,或游戏,但这不是
适用于简单的实用程序应用程序,如提要阅读器、社交网站
网络应用程序、新闻阅读器等。您不应该需要网络
启动时连接,也不会进行繁重的计算
您必须将Splash活动创建为经典活动,并且必须在
清单中声明它将是第一个启动的活动。
将此行添加到“活动启动”标记中:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
5000
意味着Intent toHomePage将在5秒后启动。
希望对你有帮助 您必须将Splash活动创建为经典活动,并且必须在清单中声明它将是第一个启动的活动。
将此行添加到“活动启动”标记中:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
5000
意味着Intent toHomePage将在5秒后启动。
希望对你有帮助 我这样使用它:
public class SplashActivity extends Activity{
private final static long SPLASH_TIME_OUT = 2000;
// SplashActivity --> serves as entry-point for the app at several situations
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashActivity.this, RegisterActivity.class);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
}
}
我是这样使用它的:
public class SplashActivity extends Activity{
private final static long SPLASH_TIME_OUT = 2000;
// SplashActivity --> serves as entry-point for the app at several situations
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashActivity.this, RegisterActivity.class);
startActivity(i);
// close this activity
finish();
}
}, SPLASH_TIME_OUT);
}
}
我将此活动作为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);
}
}
public class MainActivity extends AppCompatActivity {
oAuth_Model oAuth_model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
showBasicSplash();
}
private void showBasicSplash() {
new Thread(){
@Override
public void run() {
super.run();
try {
Thread.sleep(1500);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
public void handleMessage(Message m){
if (getBoolean(Constant.AFTERLANG)){
Intent intent = new Intent(MainActivity.this, Landing_three.class);
startActivity(intent);
finish();
}else {
Intent intent = new Intent(MainActivity.this, Activity_Sec.class);
startActivity(intent);
finish();
}
}
};
}
并将此活动添加到Manifests.xml:
<activity android:name=".MainActivity"
android:configChanges="orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</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);
}
}
public class MainActivity extends AppCompatActivity {
oAuth_Model oAuth_model;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
showBasicSplash();
}
private void showBasicSplash() {
new Thread(){
@Override
public void run() {
super.run();
try {
Thread.sleep(1500);
handler.sendEmptyMessage(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();
}
@SuppressLint("HandlerLeak")
Handler handler = new Handler(){
public void handleMessage(Message m){
if (getBoolean(Constant.AFTERLANG)){
Intent intent = new Intent(MainActivity.this, Landing_three.class);
startActivity(intent);
finish();
}else {
Intent intent = new Intent(MainActivity.this, Activity_Sec.class);
startActivity(intent);
finish();
}
}
};
}
并将此活动添加到Manifests.xml:
<activity android:name=".MainActivity"
android:configChanges="orientation"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>