투케이2K

486. (Android/kotlin) [유틸 파일] 코틀린 로딩 프로그레스 (Loading Progress) 활성 팝업창 (alert) 생성 본문

Android

486. (Android/kotlin) [유틸 파일] 코틀린 로딩 프로그레스 (Loading Progress) 활성 팝업창 (alert) 생성

투케이2K 2023. 2. 18. 18:56

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [LOADING] : [로딩 Alert 팝업창 호출 실시]
        // ----------------------------------------------------------------------------------
        var progress_Dialog: ProgressDialog? = null
        fun startLoadingAlert(mContext: Context?, header: String, content: String, ok: String) {

            /**
             * // -----------------------------------------
             * [startLoadingAlert 메소드 설명]
             * // -----------------------------------------
             * 1. 로딩 팝업창 호출 메소드
             * // -----------------------------------------
             * */

            // -----------------------------------------

            /** [사용 방법 정의] */
            /*
            // [팝업창 호출 실시]
            C_Ui_View.startLoadingAlert(
                    A_Main@this,
                    "알림",
                    "잠시만 기다려 주세요",
                    "확인")
            // */

            // -----------------------------------------
            try {
                Handler(Looper.getMainLooper()).postDelayed({ // [이미 실행 중인 팝업창이 있는 경우 종료]

                    // [이미 실행 중인 팝업창이 있는 경우 종료]
                    stopLoadingAlert(mContext)

                    //*
                    S_Log.ltd("================================================")
                    S_Log.cnt("[" + ACTIVITY_NAME + " >> " + "startLoadingAlert" + " :: 로딩 팝업창 호출 실시]")
                    S_Log.cnt("-----------------------------------------")
                    S_Log.cnt("[header :: $header]")
                    S_Log.cnt("-----------------------------------------")
                    S_Log.cnt("[content :: $content]")
                    S_Log.lbd("================================================")
                    // */

                    // [AlertDialog 팝업창 생성]
                    val progress_Dialog = ProgressDialog(mContext)
                    progress_Dialog.setTitle(header) //[팝업창 타이틀 지정]
                    //progress_Dialog.setIcon(R.drawable.app_icon) //[팝업창 아이콘 지정]
                    progress_Dialog.setMessage(content) //[팝업창 내용 지정]
                    progress_Dialog.setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
                    progress_Dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER) //[프로그레스 원형 표시 설정]
                    progress_Dialog.setButton(DialogInterface.BUTTON_POSITIVE, ok) { dialog, which ->
                        // TODO Auto-generated method stub
                        // -----------------------------------------
                        // TODO [확인 버튼 클릭 이벤트 처리]
                        stopLoadingAlert(mContext)
                        // -----------------------------------------
                    }
                    progress_Dialog.show()

                }, 0)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }




        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [LOADING] : [로딩 Alert 팝업창 종료 실시]
        // ----------------------------------------------------------------------------------
        fun stopLoadingAlert(mContext: Context?) {

            /**
             * // -----------------------------------------
             * [stopLoadingAlert 메소드 설명]
             * // -----------------------------------------
             * 1. 로딩 팝업창 종료 메소드
             * // -----------------------------------------
             */

            // -----------------------------------------

            //*
            S_Log.lte("================================================")
            S_Log.cnt("[" + ACTIVITY_NAME + " >> " + C_Util.getNowMethod(1) + " :: 로딩 팝업창 종료 실시]")
            S_Log.lbe("================================================")
            // */

            // -----------------------------------------
            /** [사용 방법 정의]  */
            /*
            // [팝업창 호출 실시]
            C_Ui_View.stopLoadingAlert(A_Main@this)
            // */

            // -----------------------------------------
            try {
                Handler(Looper.getMainLooper()).postDelayed({
                    if (progress_Dialog != null) {
                        progress_Dialog!!.dismiss()
                        progress_Dialog = null
                    }
                }, 0)
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
 

[결과 출력]


 

반응형
Comments