본문 바로가기
모바일앱 프로젝트

안드로이드 로딩 화면 만들기 (java)

by Nicole 2021. 3. 23.

크게 두 가지 방법으로 구현해봤다.

1) ProgressDialog 사용하기

2) 새로운 activity 사용하기

 

1) ProgressDialog 사용하기

ProgressDialog에는 크게 선형으로 구현되는 linear 타입과 우리가 흔히 보는 spinner 타입이 사용되는 것 같다.

나는 spinner 타입을 사용했다.

// ProgressDialog 생성
ProgressDialog dialog = new ProgressDialog(SubActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("Image processing...");

dialog.show();

// ProgressDialog 없애기
dialog.dismiss();

나는 이미지뷰의 이미지를 서버 전송 시 (전송 버튼 onClick) 위의 ProgressDialog가 실행되도록 했다.

그리고 서버로부터 response를 받으면 dialog.dismiss( ) 함수를 호출하여 dialog가 사라지도록 했다.

이미지 처리가 되면 dialog가 사라지고 Toast를 이용한 간단한 팝업 메시지가 뜬다.

 

2) 새로운 activity 사용하기

위의 샘플 에뮬레이터 사진처럼, 보내기를 onClick시 intent를 사용해서 다음 activity로 넘어가게 구현해봤다.

이때, activity를 끝내는 함수 finish( ) 사용하기 위해서는, 해당 activity 내에서 finish 가 호출되어야 하기 때문에,

아예 이전 activity에서 전송하던 Retrofit 객체를 loading activity에서 서버로 전송했다.

 

Loading activity를 호출하는 activity를 CallerAcitivy라고 하면, 기존에 파일을 서버에 보내는 포맷이 userId와 file이었기 때문에 그에 필요한 정보들을 다음 activity로 pass했다.

Intent intent= new Intent(getApplicationContext(), LoadingActivity.class);
intent.putExtra("title", userId);
intent.putExtra("file_path", tempSelectFile);
intent.putExtra("file_name", tempSelectFile.getName());
startActivity(intent);

LoadingActivy에서는 다음과 같이 데이터를 받아주면 된다.

Intent newIntent = getIntent();
String title = newIntent.getStringExtra("title");
File file_path = (File)newIntent.getExtras().get("file_path");
String file_name = newIntent.getStringExtra("file_name");

데이터가 문자열인지 File인지, 다른 타입의 객체인지에 따라 조금씩 put, get 포맷이 다르기 때문에 그 부분을 염두에 둔다.

실행해보면 다음과 같다. TextView 아래 부분에 예쁜 ImageView 하나 추가해주면 더 그럴 듯 해보일 것 같다.

해당 LoadingActivity 마지막에 finish( ); 호출해줘야 이전 activity로 돌아간다.

실행 샘플은 다음과 같다.

 

 

댓글