【问题标题】:Image on start up / loading启动/加载时的图像
【发布时间】:2011-06-19 17:19:37
【问题描述】:

我正在开发一个应用程序,当它从 onCreate 点加载时,我只有一个黑屏(直到应用程序站稳脚跟)。查看其他应用程序,他们有一个公司徽标或弹出几秒钟的酷图片,有人可以告诉我该怎么做吗?

如果您可以将其设置为显示最短时间?

【问题讨论】:

    标签: android image loading oncreate


    【解决方案1】:

    创建一个新的活动,显示几秒钟的图像并重定向到你的主要活动:

    public class SplashActivity extends Activity
    {
        private static final long DELAY = 3000;
        private boolean scheduled = false;
        private Timer splashTimer;
    
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.splash);
    
            splashTimer = new Timer();
            splashTimer.schedule(new TimerTask()
            {
                @Override
                public void run()
                {
                    SplashActivity.this.finish();
                    startActivity(new Intent(SplashActivity.this, MainActivity.class));
                }
             }, DELAY);
           scheduled = true;
        }
    
        @Override
        protected void onDestroy()
        {
            super.onDestroy();
            if (scheduled)
                splashTimer.cancel();
            splashTimer.purge();
        }
    }
    

    将您的图片设置为此活动的背景。希望有帮助。祝你好运!

    【讨论】:

    • 但是请使用Handler而不是TimerTask
    • 你是在模拟器还是真机上测试过这段代码? Android 上没有 Timer
    • Timer 不是一个 android 对象,它是一个 java 对象。这是我的一个应用程序中的工作代码。它适用于设备和模拟器。将以下内容添加到您的导入列表中,您会没事的: import java.util.Timer;导入 java.util.TimerTask;
    • 延迟应用启动从来都不是一个好策略。这个link 显示了一篇解释如何正确执行此操作的文章。核心思想是在应用程序进行初始处理时加载图像。
    【解决方案2】:

    此启动图像也称为“启动画面”。 Here你可以找到制作闪屏的方法。

    【讨论】:

      【解决方案3】:

      您的需求是 callign 启动画面。这是我的闪屏代码。

      只需添加新活动并设置打开此活动的应用程序。

      公共类 SplashActivity 扩展 DeviceInfoAbstractActivity {

      @SuppressLint("MissingSuperCall")
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState, R.layout.activity_splash);
      
          passScreen();
      }
      
      private void passScreen() {
      
          new CountDownTimer(1000, 2000) {
      
              @Override
              public void onTick(long millisUntilFinished) {
      
              }
      
              @Override
              public void onFinish() {
      
                  Intent intent = RDAIntentHelpers.getClearCacheIntent();
      
                  intent.setClass(SplashActivity.this, MainActivity.class);
      
                  startActivity(intent);
      
              }
          }.start();
      }
      
      @Override
      public void onBackPressed() {
          //no exit
      }
      }
      

      这是我的 getClearCacheIntent() 方法

      public static Intent getClearCacheIntent() {
      
          Intent intent = new Intent();
      
          intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
      
          return intent;
      }
      

      在这些之后,您的初始屏幕会在屏幕上停留 2 秒。随心所欲 =)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多