투케이2K

315. (AndroidStudio/android/java) alert dialog 팝업창 애니메이션 효과 부여 실시 - anim , styles 본문

Android

315. (AndroidStudio/android/java) alert dialog 팝업창 애니메이션 효과 부여 실시 - anim , styles

투케이2K 2022. 8. 9. 12:16

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 
 

[파일 생성 방법]

 

[anim 폴더 - fadein.xml]

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    android:duration="2000" />
 

[values 폴더 - styles.xml]

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- [애플리케이션 테마 스타일] -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>


    <!-- [팝업창 스타일 지정] -->
    <style name="fadeDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowAnimationStyle">@style/FadeAnimation</item>
    </style>
    <style name="FadeAnimation">
        <!-- [1. 팝업창 활성 애니메이션 : xml 파일 지정] -->
        <item name="android:windowEnterAnimation">@anim/fadein</item>

        <!-- [2. 팝업창 종료 애니메이션 : xml 파일 지정] -->
        <!-- <item name="android:windowExitAnimation">@android:anim/fade_out</item> -->
    </style>
</resources>
 

[alert 팝업창 활성 - 자바 코드]

 

    // TODO [팝업창 호출 처리 메소드]
    public static void showAlert(Context mContext, int setType ,String header, String content, String ok, String no, String normal){
        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[C_Util >> showAlert() :: 팝업창 호출 실시]");
        Log.i("","\n"+"[setType :: "+String.valueOf(setType)+"]");
        Log.i("","\n"+"[header :: "+String.valueOf(header)+"]");
        Log.i("","\n"+"[content :: "+String.valueOf(content)+"]");
        Log.d("//===========//","================================================");
        Log.i("---","---");

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

        /** [사용 방법 정의] */
        /*
        // [팝업창 호출 실시]
        C_Util.showAlert(
                A_Main.this,
                0,
                "알림",
                "내용 입니다",
                "확인",
                "취소",
                "");
        // */

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

        // [타이틀 및 내용 표시]
        final String Tittle = String.valueOf(header);
        final String Message = String.valueOf(content);

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

        // [버튼 이름 정의]
        String buttonYes = String.valueOf(ok);
        String buttonNo = String.valueOf(no);
        String buttonNature = String.valueOf(normal);

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

        try {
            // [AlertDialog 팝업창 생성]
            AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mContext);
            alertDialogBuilder.setTitle(Tittle) //[팝업창 타이틀 지정]
                    //.setIcon(R.drawable.app_icon) //[팝업창 아이콘 지정]
                    .setMessage(Message) //[팝업창 내용 지정]
                    .setCancelable(false) //[외부 레이아웃 클릭시도 팝업창이 사라지지않게 설정]
                    .setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            // -----------------------------------------
                            // TODO [확인 버튼 클릭 이벤트 처리]
                            // -----------------------------------------
                        }
                    })
                    .setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            // -----------------------------------------
                            // TODO [취소 버튼 클릭 이벤트 처리]
                            // -----------------------------------------
                        }
                    })
                    .setNeutralButton(buttonNature, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            // -----------------------------------------
                            // TODO [Neutral 버튼 클릭 이벤트 처리]
                            // -----------------------------------------
                        }
                    });

            // [다이얼로그 생성]
            AlertDialog alertDialog = alertDialogBuilder.create();

            // [다이얼로그 스타일 지정]
            alertDialog.getWindow().getAttributes().windowAnimations = R.style.FadeAnimation;

            // [다이얼로그 활성]
            alertDialog.show();

        }
        catch (Exception e){
            //e.printStackTrace();
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_Util >> showAlert() :: 팝업창 호출 실시]");
            Log.i("","\n"+"[catch [에러] :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
        }
    }

반응형
Comments