Notice
Recent Posts
Recent Comments
Link
투케이2K
25. (AndroidStudio/android/java) ProgressDialog 사용해 가로 막대 모양 로딩 프로그레스 바 활성 실시 본문
Android
25. (AndroidStudio/android/java) ProgressDialog 사용해 가로 막대 모양 로딩 프로그레스 바 활성 실시
투케이2K 2021. 1. 27. 17:28/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
// ====== [전역 변수 선언] ======
ProgressDialog progress_Dialog = null; //TODO 프로그레스 사용 위한 다이얼로그 선언
int progress_Value = 0; //TODO 기본 프로그레스값 표시
// ====== [프로그레스 로딩 시작 메소드 호출] ======
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getProgressStart(); //TODO 프로그레스 활성 메소드 호출
}
});
// ====== [프로그레스 로딩 시작 메소드] ======
public void getProgressStart(){
//TODO 타이틀 및 내용 표시
String Tittle = "Please Wait ... ";
String Message = "Please Wait ... ";
//TODO 버튼 이름 정의
String buttonNo = "종료";
String buttonYes = "확인";
progress_Dialog = new ProgressDialog(A_Main.this);
progress_Dialog.setTitle(Tittle); //TODO 타이틀 메시지 표시
progress_Dialog.setIcon(R.drawable.circle_img); //TODO 아이콘 표시
//progress_Dialog.setMessage(Message); //TODO 메시지 표시
progress_Dialog.setCancelable(false); //TODO 창 안닫힘 설정
//progress_Dialog.setProgressPercentFormat(null); //TODO 프로그레스 진행 퍼센트 안보임 설정
progress_Dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); //TODO 프로그레스 가로 막대 진행 표시 설정
progress_Dialog.setMax(100); //TODO 프로그레스 Max값 설정 (디폴트 100 설정)
progress_Dialog.setButton(DialogInterface.BUTTON_NEGATIVE, buttonNo,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplication(),"종료 합니다 ... ",Toast.LENGTH_SHORT).show();
getProgressStop(); //종료 메소드 호출
}
});
progress_Dialog.setButton(DialogInterface.BUTTON_POSITIVE, buttonYes,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplication(),"진행 중입니다 ... ",Toast.LENGTH_SHORT).show();
getProgressStop(); //종료 메소드 호출
}
});
progress_Dialog.show();
ProgressHandler.sendEmptyMessage(0); //TODO 동적 UI 변경을 위해 핸들러 호출
}
Handler ProgressHandler = new Handler() {
public void handleMessage(Message msg) {
//==== [주기적으로 처리할 작업] ====
if(progress_Value >= 100){ //TODO 프로그레스 로딩 완료 시 처리
progress_Dialog.setProgress(progress_Value);
getProgressStop();
}
else{ //TODO 프로그레스 로딩 중일 경우
progress_Dialog.setProgress(progress_Value);
/** [프로그레스 값 증가 테스트 위해 progress_Value 증가 코드 삽입]*/
progress_Value += 20;
//==== [자신을 1초마다 호출(무한 루프로 호출)] ====
ProgressHandler.sendEmptyMessageDelayed(0, 1000);
}
}
};
// ====== [프로그레스 로딩 종료 메소드] ======
public void getProgressStop(){
try {
//==== [핸들러 사용 해제] ====
if(ProgressHandler != null){
ProgressHandler.removeMessages(0);
ProgressHandler.removeCallbacks(null);
}
//==== [다이얼로그 종료] ====
if(progress_Dialog != null){
progress_Dialog.dismiss();
}
//==== [프로그레스 값 초기화 실시] ====
progress_Value = 0;
}
catch (Exception e){
e.printStackTrace();
}
}
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[첨부 이미지 파일]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments