我有一个应用程序。 当我的应用程序启动时,我会显示并启动屏幕。当我的闪屏结束时,我开始我的主要活动。 但我有一个问题。当我在启动画面中旋转我的应用程序时,我的应用程序重启并在四秒后启动我的新活动。如果我将启动画面旋转三次,请启动三个主要活动。
我想只开始一项活动,我该怎么做?
这是我的启动画面代码:
public class Splash extends Activity {
public static final int seconds=4;
public static final int miliseconds=seconds*1000;
private ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
progressBar=(ProgressBar) findViewById(R.id.progressBar);
progressBar.setMax(seconds-1);
progressBar.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);
startAnimation();
}
public void startAnimation(){
new CountDownTimer(miliseconds,1000){
@Override
public void onTick(long millisUntilFinished) {
//progressbar update--->1 second
progressBar.setProgress(getMiliseconds(millisUntilFinished));
}
@Override
public void onFinish() {
Intent i = new Intent(Splash.this, MainActivity.class);
Splash.this.startActivityForResult(i,1);
}
}.start();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//when I return to the MainActivity, finish my app
if(requestCode==1) finish();
}
public int getMiliseconds(long milis){
return (int) ((milisegundos-milis)/1000);
}
}
答案 0 :(得分:1)
在manifest.xml
中的活动代码中使用configchanges
示例强>
<activity
android:name=".Splash"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation" />
如果你想一次又一次地避免使用onCreate,你可以在其他活动上使用这个标签
答案 1 :(得分:0)
试试这个
Intent i = new Intent(Splash.this, MainActivity.class);
startActivity(i);
finish();
答案 2 :(得分:0)
在AndroidManifest.xml
中,您需要将方向设置为特定方向。在android:screenOrientation="portrait"
下添加您的活动内容。例如,我的活动现在可能如下所示:
<activity
android:name=".SplashScreen"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
如果您处于横向模式,请使用android:screenOrientation="landscape"
。
如果这不起作用,请在onFinish()
方法中使用以下内容:
@Override
public void onFinish() {
Intent i = new Intent(Splash.this, MainActivity.class);
startActivity(i);
finish();
}