部署充气布局的时间延迟

3

我正在尝试创建一个游戏,在课程活动中我有一个优美的风景背景。我希望玩家在我的教程弹出式xml膨胀之前能看到这个背景一两秒钟。问题是,透明的弹出式xml和背景xml都会在活动初始化时立即出现。我是新手无法理解Android开发者主页上的解释。任何帮助将不胜感激。

package com.jibushi;

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class LessonsShell extends Activity {

    private View view;

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

        setContentView(R.layout.lessons);

        final ViewGroup parent = (ViewGroup) findViewById(R.id.lessons_bg);

        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    wait(1000);
                } catch (InterruptedException e) {

                } finally {
                    view();
                }
            }

            private void view() {
                // TODO Auto-generated method stub
                view = LayoutInflater.from(getBaseContext()).inflate(
                        R.layout.lessons_dialog, null);
                parent.addView(view);
            }
        };
        splashTread.start();
    }
}
2个回答

2

试试这个:

public class LessonsShell extends Activity{
private static final int MESSAGE_SHOW_POPUP=7;
private static final long TIME_DELAY=3000;//3 seconds
private View view;
private Handler handler=new Handler(){
   handleMessage(Message msg){
      switch(msg.what){
        case MESSAGE_SHOW_POPUP:
           view();
           break;
       }
   };
};

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

setContentView(R.layout.lessons);
//this will send a message to the handler to display the popup after 3 seconds.
handler.sendEmptyMessageDelayed(MESSAGE_SHOW_POPUP,TIME_DELAY);

}

private void view() {
// TODO Auto-generated method stub
 ViewGroup parent = (ViewGroup) findViewById(R.id.lessons_bg);
 view = LayoutInflater.from(getBaseContext()).inflate(R.layout.lessons_dialog, null);
 parent.addView(view);
}

一个 handler 在安卓中可以很好地替代定时器。

以前的做法是在 onCreate 中创建一个后台线程,试图从那里访问 UI 线程。根据我的经验,这样会导致崩溃,因为你不能从后台线程访问 UI 线程。


0

在非 UI 线程中无法更改 UI 元素,因此此代码将不起作用。

1)显示空白背景。

2)执行异步任务,其中包括:

DoinBackground()
{
wait 
}
onPostExecute()
{
addView 
}

(如有任何术语不熟悉,请参考谷歌)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接