【问题标题】:Start new activity when splash screen finished启动画面完成后开始新的活动
【发布时间】:2015-03-20 09:50:29
【问题描述】:

我有一个应用程序。 当我的应用程序启动时,我会显示并启动屏幕。当我的启动画面完成后,我开始我的主要活动。 但我有一个问题。当我在启动画面中旋转我的应用程序时,我的应用程序重新启动,四秒后,开始我的新活动。如果我将启动画面旋转三次,则启动三个主要活动。

我只想开始一项活动,我该怎么做?

这是我的初始屏幕代码:

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);
}

}

【问题讨论】:

标签: android splash-screen


【解决方案1】:

在 manifest.xml 的活动标签中使用 configchanges

示例

<activity
     android:name=".Splash"
     android:label="@string/app_name"
     android:configChanges="keyboardHidden|orientation" />

如果你想一次又一次地避免 onCreate,你也可以在其他活动上使用这个标签

【讨论】:

    【解决方案2】:

    试试这个

    Intent i =  new Intent(Splash.this, MainActivity.class);
    startActivity(i);
    finish();
    

    【讨论】:

      【解决方案3】:

      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();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-15
        • 1970-01-01
        相关资源
        最近更新 更多