在android应用程序启动时添加加载屏幕

时间:2013-06-28 04:33:08

标签: android android-applicationinfo

我的应用程序在10秒内加载起始页面。在那个10秒的时间内,android屏幕是空白的。 那时我想添加加载屏幕。如何添加? 并在应用程序中告诉我如何知道起始页面正在加载?并告诉我如何在我的应用程序中做?

7 个答案:

答案 0 :(得分:38)

使用ProgressDialog。

ProgressDialog dialog=new ProgressDialog(context);
dialog.setMessage("message");
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
dialog.show();
只要您的UI准备好数据,就会隐藏它。打电话:

dialog.hide();

答案 1 :(得分:27)

您可以在第一次加载活动中使用启动画面,如下所示:

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        Thread welcomeThread = new Thread() {

            @Override
            public void run() {
                try {
                    super.run();
                    sleep(10000);  //Delay of 10 seconds
                } catch (Exception e) {

                } finally {

                    Intent i = new Intent(SplashActivity.this,
                            MainActivity.class);
                    startActivity(i);
                    finish();
                }
            }
        };
        welcomeThread.start();
    }

希望此代码可以帮助您。

答案 2 :(得分:16)

Please read this article

Chris Stewart在那里写道:

  飞溅屏幕只是浪费你的时间,对吗?作为Android开发人员,   当我看到一个闪屏时,我知道一些可怜的开发者不得不添加一个   代码延迟三秒钟。

     

然后,我必须盯着一些照片三秒钟,直到我可以   使用该应用程序。每次推出时我都必须这样做。我知道   我打开了哪个应用。我知道它的作用。让我用它!

     

Splash筛选正确的方式

     

我相信谷歌并不自相矛盾;旧的建议和   新的立场。 (也就是说,使用它仍然不是一个好主意   一个浪费用户时间的闪屏。请不要这样做。)

     

然而,Android应用程序确实需要一些时间来启动,   特别是冷启动。你可能没有延迟   能够避免。在此期间,为什么不是留下空白屏幕   没有向用户展示好的东西?这是谷歌的方法   崇尚。不要浪费用户的时间,但不要显示空白,   第一次启动时,应用程序的未配置部分。

     

如果您查看Google应用的最新更新,您会看到合适的   使用启动画面。请查看YouTube应用   示例

enter image description here

答案 3 :(得分:3)

您可以创建自定义加载屏幕而不是初始屏幕。如果你在10秒内显示闪屏,那对用户体验来说并不是一个好主意。因此最好添加自定义加载屏幕。对于自定义加载屏幕,您可能需要一些不同的图像,使其感觉像一个GIF。之后,在res文件夹中添加图像并创建如下类: -

public class LoadingScreen {private ImageView loading;

LoadingScreen(ImageView loading) {
    this.loading = loading;
}

public void setLoadScreen(){
    final Integer[] loadingImages = {R.mipmap.loading_1, R.mipmap.loading_2, R.mipmap.loading_3, R.mipmap.loading_4};
    final Handler loadingHandler = new Handler();
    Runnable runnable = new Runnable() {
        int loadingImgIndex = 0;
        public void run() {
            loading.setImageResource(loadingImages[loadingImgIndex]);
            loadingImgIndex++;
            if (loadingImgIndex >= loadingImages.length)
                loadingImgIndex = 0;
            loadingHandler.postDelayed(this, 500);
        }
    };
    loadingHandler.postDelayed(runnable, 500);
}}

在MainActivity中,您可以像这样传递给LoadingScreen类: -

private ImageView loadingImage;

不要忘记在activity_main中添加ImageView。 之后,像这样调用Lo​​adingScreen类;

LoadingScreen loadingscreen = new LoadingScreen(loadingImage);
loadingscreen.setLoadScreen();

我希望这会对你有所帮助

答案 4 :(得分:1)

public class Splash extends Activity {

    private final int SPLASH_DISPLAY_LENGHT = 3000;            //set your time here......

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);

        new Handler().postDelayed(new Runnable(){
            @Override
            public void run() {
                /* Create an Intent that will start the Menu-Activity. */
                Intent mainIntent = new Intent(Splash.this,MainActivity.class);
                Splash.this.startActivity(mainIntent);
                Splash.this.finish();
            }
        }, SPLASH_DISPLAY_LENGHT);
    }
}

答案 5 :(得分:1)

如果应用程序在10秒内没有做任何事情,这将形成一个糟糕的设计,只是让用户等待10秒钟什么都不做。

如果有什么事情发生,或者如果你希望实现10秒延迟闪屏,这是代码:

ProgressDialog pd;
pd = ProgressDialog.show(this,"Please Wait...", "Loading Application..", false, true);
pd.setCanceledOnTouchOutside(false);
Thread t = new Thread()
{ 
      @Override
      public void run()
      {
                try
                {
                    sleep(10000)  //Delay of 10 seconds
                } 
        catch (Exception e) {}
        handler.sendEmptyMessage(0);
        }
} ;
t.start();

//Handles the thread result of the Backup being executed.
private Handler handler = new Handler()
{
    @Override
    public void handleMessage(Message msg) 
    {
        pd.dismiss();
        //Start the Next Activity here...

    }
};

答案 6 :(得分:0)

编写代码:

<fieldset id="gift">
  <table>
    <tr id="tr1">
      <td class="style33"><input type='checkbox' name='lFreeProductid' value='8840' id="lFreeProductid1"  class="gift"></td>
      <td class="style42"><label for="lFreeProductid1">64 SSG</label></td>
      <td class="style32">&nbsp;</td>
    </tr>


    <tr id="tr2">
      <td class="style33"><input type='checkbox' name='lFreeProductid' value='420' id="lFreeProductid2"  class="gift"></td>
      <td class="style41"><label for="lFreeProductid2">Perfect D</label></td>
      <td>&nbsp;</td>
    </tr>


    <tr id="tr3">
      <td class="style33"><input type='checkbox' name='lFreeProductid' value='460' id="lFreeProductid3" class="gift"></td>
      <td class="style41"><label for="lFreeProductid3">Soccer Attack</label></td>
      <td>&nbsp;</td>
    </tr>

    <tr>
      <td class="style33">&nbsp;</td>
      <td class="style41">&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
</fieldset> 
<textarea id="txtValue"></textarea>