안드로이드 개발 질문/답변
(글 수 45,052)
어플을 구동시키면 최초 화면이
이런 화면이 나오고 어플 화면으로 넘어가던데요
저 화면에서 리소스 로딩등의 작업이 이루어 지게 구현 되어있습니다.
그래서 저 화면에 리소스 로딩 관련 프로그래스 다이얼로그나
그냥 로딩중이라는 다이얼로그를 띄워주려고 합니다만
메인 액티비티의 onCreate에서 showDialog나 dialog.show()를 사용해봐도
저 화면에선 보여지지 않고 어플 화면이으로 전환되면서 다이얼로그가 튀어나오더군요;;
제 소스는 MainActivity와 GameView 두개로 구성되어 있고
다이얼로그 관련 소스는 다음과 같습니다.
위 소스처럼 onCreateDialog를 사용하여 showDialog를 사용해도 동일한 현상이고
주석 처리되있는 다이얼로그를 dialog.show();로 해줘도 안됩니다..
게임 화면 처리 부분에서 surfaceHolder를 사용중입니다만
surfaceHolder로 화면 업데이트가 되기 전에 저 어플 최초 진입 화면도
따로 업데이트 해주는 뭔가가 있어야 하는건가요??
이런 화면이 나오고 어플 화면으로 넘어가던데요
저 화면에서 리소스 로딩등의 작업이 이루어 지게 구현 되어있습니다.
그래서 저 화면에 리소스 로딩 관련 프로그래스 다이얼로그나
그냥 로딩중이라는 다이얼로그를 띄워주려고 합니다만
메인 액티비티의 onCreate에서 showDialog나 dialog.show()를 사용해봐도
저 화면에선 보여지지 않고 어플 화면이으로 전환되면서 다이얼로그가 튀어나오더군요;;
제 소스는 MainActivity와 GameView 두개로 구성되어 있고
다이얼로그 관련 소스는 다음과 같습니다.
public class MainActivity extends Activity {
private MingleThread mMingleThread;
private GameView mGameView;
public Vibrator v;
static final int PROGRESS_DIALOG = 0;
ProgressDialog progressDialog;
/*
* 액티비티가 생성될 때 처음으로 호출되는 함수.
* 리소스를 초기화한다.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
//Log.d("debug", "onCreate_START_MainActivity");
super.onCreate(savedInstanceState);
//윈도우 상단 status bar 삭제
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//윈도우 상단 타이틀바 삭제
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
//ProgressDialog dialog = ProgressDialog.show(MainActivity.this, "MingleMangle", "Loading. Please wait...", true);
//dialog.show();
showDialog(PROGRESS_DIALOG);
v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
mGameView = (GameView) findViewById(R.id.minglemangle);
mMingleThread = mGameView.getThread();
mGameView.setVib(v);
}
protected Dialog onCreateDialog(int id) {
switch(id) {
case PROGRESS_DIALOG:
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);
progressDialog.setMessage("Loading...");
return progressDialog;
default:
return null;
}
}
final Handler handler = new Handler() {
public void handleMessage(Message msg) {
int total = msg.getData().getInt("total");
progressDialog.setProgress(total);
if(total >= 100) {
dismissDialog(PROGRESS_DIALOG);
}
}
};
}위 소스처럼 onCreateDialog를 사용하여 showDialog를 사용해도 동일한 현상이고
주석 처리되있는 다이얼로그를 dialog.show();로 해줘도 안됩니다..
게임 화면 처리 부분에서 surfaceHolder를 사용중입니다만
surfaceHolder로 화면 업데이트가 되기 전에 저 어플 최초 진입 화면도
따로 업데이트 해주는 뭔가가 있어야 하는건가요??




Runnable doGameInit = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
mGameView = (GameView) findViewById(R.id.minglemangle);
mMingleThread = mGameView.getThread();
mGameView.setVib(v);
}
};
쓰래드로 이렇게 빼시고
showDialog 밑에
handler.postDelayed(doGameInit , 1500);
될지는 모르겠네요 ^^;;;