본문 바로가기
안드로이드 스튜디오 앱 개발/실제 앱 개발 과정

[ Android Studio ] 깜빡이는 애니메이션(Animation) 텍스트뷰(TextView) 만들기 + 시한폭탄 예제

by 망댕이 2023. 7. 11.
반응형

이와 같은 깜빡이는 애니메이션을 가진 텍스트뷰를 만드는 법에 대해 알아보도록 하겠습니다.

 

 

이런 깜빡이는 애니메이션을 사용할 때 어떤 코드를 사용하는지 보도록 하자면

 

<MainActivity.java>

이와 같은 코드로 간단히 작성할 수 있습니다.

 

animation = new AlphaAnimation(0.0f, 1.0f);

깜빡거릴때 투명도를 설정하는 클래스입니다. 괄호안에 들어있는 실수 값은 투명도의 범위를 의미하며 범위 값은 0.0부터 1.0까지 입니다.

 

animation.setDuration(100);

깜빡이는 애니메이션이 지속되는 시간을 의미합니다.

단위는 millisecond로 1000에 1초이며, 여기서는 0.1초를 의미합니다.

 

animation.setStartOffset(10);

시작 시간을 기준으로 깜빡이는 애니메이션을 시작하는 시간입니다.

즉, 다음 애니메이션까지 딜레이 시간이라 보면 이해하기 좋을 것 같습니다.

 

animation.setRepeatCount(Animation.INFINITE);

애니메이션을 반복하는 횟수를 지정하는 것입니다.

 

animation.setRepeatMode(Animation.REVERSE);

애니메이션이 끝에 달았을 때 수행할 작업을 정의합니다.

 

 

이렇게 animation을 지정하고 textView.startAnimation(animation);을 통해 textView에 애니메이션을 지정하면 깜빡이는 텍스트뷰가 만들어지게 됩니다.

또한 textView.clearAnimation(); 으로 상황에 따른 textView의 깜빡이는 애니메이션을 종료할 수 있습니다.

 

깜빡이는 애니메이션으로 시한 폭탄 만들기

위와 같은 내용을 바탕으로 countDownTimer와 Animation을 이용하여 시한 폭탄을 만들 수 있습니다.

button_bomb_random.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        int random = (int) (Math.random()*bombTexts.length);

        textView_bomb_random_text .setText(bombTexts[random]);

        int randomTime_Num = (int) (Math.random()*randomTime.length);

        countDownTimer = new CountDownTimer(randomTime[randomTime_Num], 1000) {

            @Override

            public void onTick(long l) {

                textView_bomb.setText((l / 1000)/60 + "분" + (l / 1000)%60 + "초");

                if(l <= 15000){

                    textView_bomb.startAnimation(anim);

                }

            }

            @Override

            public void onFinish() {

                textView_bomb.setText("시간 종료");

                button_bomb_random.setEnabled(true);

                vibrator.vibrate(2500);

                Handler handler = new Handler();

                handler.postDelayed(new Runnable() {

                    @Override

                    public void run() {

                        textView_bomb.clearAnimation();

                    }

                },2500);

            }

        };

        countDownTimer.start();

    }

});

​

anim = new AlphaAnimation(0.0f, 1.0f);

anim.setDuration(150);

anim.setStartOffset(20);

anim.setRepeatCount(Animation.INFINITE);

​

button_bomb_back.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

        Intent intent = new Intent(getApplicationContext(), MainActivity.class);

        startActivity(intent);

    }

});

​이렇게 15초 남았을 때 부터 폭탄이 곧 터질 것이라는 경고를 주기 위해 남은 시간이 깜빡거리는 코드를 이렇게 만들 수 있습니다.

 

 

반응형