2013-12-19 2 views
0

.obj 모델을로드 할 때 진행 대화 상자를 표시 할 수 있습니다. 나는 RajawaliVuforiaExampleRenderer.java에서해서 ProgressDialog 통화를 시도했으나 전화가Rajawali Vuforia의 진행 대화 상자 예제

내가 여기에 코드의 일부 붙여 넣은 "Looper.prepare라고하지 않은 스레드() 안에 핸들러를 만들 수 없습니다"라고 :

보호 무효가 initScene는() {

mLight = new DirectionalLight(.1f, 0, -1.0f); 
    mLight.setColor(1.0f, 0, 0); 
    mLight.setPower(1); 

    getCurrentScene().addLight(mLight); 

    LoaderOBJ objParser = new LoaderOBJ(mContext.getResources(), 
      mTextureManager, R.raw.wall_obj); 

    try { 
     // Load model 
     objParser.parse(); 
     wall = objParser.getParsedObject(); 
     addChild(wall); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

편집 : 여기에 UI에 대한 내 코드 나는 지금 내가 모델을로드 할 때해서 ProgressDialog를 호출에 문제가, 렌더러 부분에 대한 코드를 Abhishek 아가 왈에서 주석을 읽고 업데이트 한 것입니다 실.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    // receive file path 
    String filePath = this.getIntent().getStringExtra("FullFilePath"); 
    Log.i(filePath, "FullFilePath:" + filePath); 

    waitDialog = ProgressDialog.show(this, "", "Loading", true); 
    waitDialog.show(); 
    new ModelLoader().execute(); 

} 

@Override 
protected void setupTracker() { 
    int result = initTracker(TRACKER_TYPE_MARKER); 
    if (result == 1) { 
     result = initTracker(TRACKER_TYPE_IMAGE); 
     if (result == 1) { 
      super.setupTracker(); 
     } else {RajLog.e("Couldn't initialize image tracker."); 
     } 
    } else { 
     RajLog.e("Couldn't initialize marker tracker."); 
    }} 

protected void initApplicationAR() { 
    super.initApplicationAR(); 
    createImageMarker("marker.xml"); 
} 

protected void initRajawali() { 
    super.initRajawali(); 
    mRenderer = new ModelRenderer(this); 
    mRenderer.setSurfaceView(mSurfaceView); 
    super.setRenderer(mRenderer); 

    mUILayout = this; 
    mUILayout.setContentView(mLayout, new LayoutParams(
      LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
} 

private class ModelLoader extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     startVuforia(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     waitDialog.dismiss(); 
    } 
} 

답변

1

진행 대화 상자는 UIThread에 표시 할 수있다. 그래서하지 GLThread

에서 메인 스레드에서 진행 대화 상자를 표시 당신은 threadUI에있을 핸들러를 사용할 수 있습니다
0

:

`private Handler mHandler = new Handler(); 
... 
mHandler.post(new Runnable() { 
     @Override 
     public void run() { 
      view_progressBar.setProgress(val); 
     } 
    });`