2011-11-19 34 views
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

试试这个:

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); 
} 

}

处理程序是一个很好的替代品在android系统定时器。

你之前做的是在onCreate中创建一个后台线程,试图从那里访问UI线程。根据我的经验,它应该会崩溃,因为你无法从后台线程访问UI线程。

+0

太棒了!感谢一堆! – kishfoo

+0

高兴地帮助:) – rDroid

0

你不能改变UI元素和非UI线程,所以这段代码将不起作用。

1)显示空白背景。

2)执行异步任务其中

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

(参照谷歌如果任何术语是未知的)。