안드로이드 개발 질문/답변
(글 수 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);
될지는 모르겠네요 ^^;;;