如何在启动画面后停止黑屏?

时间:2018-06-07 11:03:14

标签: android progress-bar splash-screen

我在Android App中使用了启动画面和进度条。但是在启动消失后,下一个屏幕变为黑色,然后切换到我的主要活动。但我不想黑屏。任何人都可以解释这里发生了什么,我该如何防止黑屏?这是我的Splash Java类。

public class Splash extends AppCompatActivity {
    private ProgressBar mProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        mProgress = (ProgressBar) findViewById(R.id.splash_screen_progress_bar);

        new Thread((new Runnable() {
            @Override
            public void run() {
                doWork();
                startApp();
                finish();
            }
        }
        )).start();
    }

    private void doWork() {
        for (int progress = 0; progress < 100; progress += 10) {
            try {
                Thread.sleep(5500);
                mProgress.setProgress(progress);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    private void startApp() {
        Intent intent = new Intent(Splash.this, MainActivity.class);
        startActivity(intent);

    }
}

4 个答案:

答案 0 :(得分:0)

我认为您可以移除finish()内的Thread

答案 1 :(得分:0)

public class Splash extends AppCompatActivity {
private ProgressBar mProgress;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);
    mProgress = (ProgressBar) findViewById(R.id.splash_screen_progress_bar);

    new Thread((new Runnable() {
        @Override
        public void run() {
            doWork();
            startApp();

        }
    }
    )).start();
}

private void doWork() {
    for (int progress = 0; progress < 100; progress += 10) {
        try {
            Thread.sleep(5500);
            mProgress.setProgress(progress);
            return;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

private void startApp() {
    Intent intent = new Intent(Splash.this, MainActivity.class);
    startActivity(intent);

}

}

答案 2 :(得分:0)

方法1: 如果你需要飞溅几秒钟:

new Thread((new Runnable() {
        @Override
        public void run() {
            try { Thread.sleep(5500); }catch(Exception e) {}
            startApp();
            finish();
        }
    }
    )).start();

方法2:飞溅完成时显示下一个屏幕:

 public class Splash extends AppCompatActivity {
    private ProgressBar mProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        mProgress = (ProgressBar) findViewById(R.id.splash_screen_progress_bar);

        new Thread((new Runnable() {
            @Override
            public void run() {
                doWork();

            }
        }
        )).start();
    }

    private void doWork() {
        for (int progress = 0; progress < 100; progress += 10) {
            try {
                Thread.sleep(5500);
                mProgress.setProgress(progress);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        startApp();
        finish();
    }

    private void startApp() {
        Intent intent = new Intent(Splash.this, MainActivity.class);
        startActivity(intent);

    } 
}

答案 3 :(得分:0)

试试这个:

public class Splash extends AppCompatActivity {
    private ProgressBar mProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        mProgress = (ProgressBar) findViewById(R.id.splash_screen_progress_bar);

        new Thread((new Runnable() {
            @Override
            public void run() {
                doWork();
                }
        }
        )).start();
    }

    private void doWork() {
        for (int progress = 0; progress < 100; progress += 10) {
            try {
                Thread.sleep(5500);
                mProgress.setProgress(progress);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
          startApp();
    }

    private void startApp() {
        Intent intent = new Intent(Splash.this, MainActivity.class);
        startActivity(intent);
     finish();
    }
}