【问题标题】:Android - ImageView on splash screen doesn't workAndroid - 初始屏幕上的 ImageView 不起作用
【发布时间】:2014-03-22 15:48:37
【问题描述】:

我想在加载主要活动时制作启动画面。

所以,我添加了 Splash 活动。

package com.originerd.tau;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;

public class Splash extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        Thread logoTimer = new Thread(){
            @Override
            public void run() {
                // TODO Auto-generated method stub
                try {
                    Intent i = new Intent(Splash.this, Main.class);
                    startActivity(i);

                    sleep(4500);
                } catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                }
                finally{
                    finish();
                }
            }
        };

        logoTimer.start();
    }

}

和activity_splash xml。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/splash" />

但是当我执行它时,屏幕只显示黑色窗口并在 3 秒后显示主要活动。我认为这是因为启动活动的图像加载时间。所以我在Intent i = new Intent(Splash.this, Main.class); 行之前添加了sleep(1000);。它有效,但我认为这不是一个好的解决方案。

我想知道在这种情况下什么是好的解决方案。目的是在主要活动准备内容时显示图像(大约需要 3 秒)。如果有任何解决方案(加载图像)而不是启动画面,请告诉我。

【问题讨论】:

    标签: android splash-screen


    【解决方案1】:

    除了在Thread 中使用sleep 方法,您还可以使用Handler.postDelayed 轻松地做同样的事情:

    Handler handler = new Handler();
    handler.postDelayed(runnable, 1000);
    Runnable runnable = new Runnable() {
             @Override
              public void run() {
                 Intent i = new Intent(Splash.this, Main.class);
                 startActivity(i);
                 handler.removeCallbacks(runnable);
        }
     };
    

    【讨论】:

    • 感谢您的回答。但主要活动的准备时间大约需要 3 秒。我该如何解决?
    【解决方案2】:

    您的图片有多大(字节)?也许可以通过使用图形工具缩小图像大小/复杂性来最小化延迟。作为测试,您可以尝试应该很小的单色图像。这至少可以告诉您延迟是否是图像大小的函数。

    【讨论】:

    • 图片大小在100Kb左右。在这种情况下展示是否太大?还有其他解决方案吗?
    • 我尝试将 imageview 更改为进度条。但它仍然没有显示。像sleep这样的唯一解决方案延迟吗?
    • 100KB 不是很大;你的问题出在其他地方。
    猜你喜欢
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-18
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多