Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드에서 텍스트뷰 깜박임 애니메이션 구현하는 방법

안드로이드에서 텍스트뷰 깜박임 애니메이션 구현하기

이 튜토리얼에서는 안드로이드 앱에서 텍스트뷰(TextView)가 깜박이는 효과를 구현하는 방법을 단계별로 살펴보겠습니다. 깜박임 효과는 HandlerThread를 활용해 일정한 시간 간격으로 뷰의 가시성(visibility)을 전환하는 방식으로 비교적 간단하게 만들 수 있습니다.

1단계 — 새 프로젝트 생성

Android Studio를 열고 File ⇒ New Project를 선택한 후, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.

2단계 — 레이아웃 파일 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout
   xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent">
   <TextView
      android:id = "@+id/text"
      android:textSize = "20dp"
      android:textAlignment = "center"
      android:layout_width = "match_parent"
      android:text = "Text blinking animation"
      android:layout_height = "wrap_content" />
</RelativeLayout>

위 코드에서는 깜박임 애니메이션을 보여줄 텍스트뷰 하나를 화면 중앙에 배치했습니다.

3단계 — MainActivity 작성

src/MainActivity.java 파일에 다음 코드를 추가합니다.

package com.example.andy.myapplication;

import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      blinkTextView();
   }
   private void blinkTextView() {
      final Handler handler = new Handler();
      new Thread(new Runnable() {
         @Override
         public void run() {
            int timeToBlink = 1000;
            try{Thread.sleep(timeToBlink);}catch (Exception e) {}
            handler.post(new Runnable() {
               @Override
               public void run() {
                  TextView txt = findViewById(R.id.text);
                  if(txt.getVisibility() == View.VISIBLE){
                     txt.setVisibility(View.INVISIBLE);
                  } else {
                     txt.setVisibility(View.VISIBLE);
                  }
                  blinkTextView();
               }
            });
         }
      }).start();
   }
}

깜박임 애니메이션의 동작 원리

텍스트뷰에 깜박임 효과를 적용하는 핵심 메서드는 다음과 같습니다.

private void blinkTextView() {
   final Handler handler = new Handler();
   new Thread(new Runnable() {
      @Override
      public void run() {
         int timeToBlink = 1000;
         try{Thread.sleep(timeToBlink);}catch (Exception e) {}
         handler.post(new Runnable() {
            @Override
            public void run() {
               TextView txt = findViewById(R.id.text);
               if(txt.getVisibility() == View.VISIBLE) {
                  txt.setVisibility(View.INVISIBLE);
               } else {
                  txt.setVisibility(View.VISIBLE);
               }
               blinkTextView();
            }
         });
      }
   }).start();
}

이 코드의 동작 흐름을 정리하면 다음과 같습니다.

  • Handler 생성 — 백그라운드 스레드에서 UI 스레드로 작업을 전달하기 위해 사용됩니다.
  • 1초 대기 — 별도의 스레드에서 1000밀리초(1초) 동안 sleep하여 깜박임 주기를 조절합니다.
  • 가시성 전환 — handler.post()를 통해 UI 스레드에서 텍스트뷰의 현재 상태를 확인한 뒤, VISIBLE이면 INVISIBLE로, 그 반대라면 VISIBLE로 변경합니다.
  • 반복 호출 — blinkTextView()를 다시 호출하여 애니메이션이 계속 반복되도록 만듭니다.

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 후, 툴바의 Run 아이콘을 클릭하세요. 기기 목록에서 본인의 모바일 기기를 선택하면 해당 기기 화면에 결과가 표시됩니다.

안드로이드에서 텍스트뷰 깜박임 애니메이션 구현하는 방법 


안드로이드에서 텍스트뷰 깜박임 애니메이션 구현하는 방법

실행 결과에서 확인할 수 있듯이, 뷰를 보였다가 숨기는 방식으로 텍스트뷰가 1초 간격으로 깜박이는 것을 볼 수 있습니다.