본문 바로가기
안드로이드 자바

[Java][Android] AlphaAnimation을 활용하여 글자 페이드 인/페이드 아웃 애니메이션 적용

by teamnova 2024. 12. 12.
728x90

안녕하세요,

 

오늘은 AlphaAnimation을 활용하여 텍스트에 페이드 인 / 페이드 아웃 애니메이션을 적용해보도록 하겠습니다. 

 

AlphaAnimation은 안드로이드에서 제공하는 애니메이션 클래스 중 하나로, 뷰(View)의 투명도(Alpha 값)를 조정하여 페이드 인(Fade In) 또는 페이드 아웃(Fade Out) 효과를 구현할 때 사용됩니다.

 

전체 코드 입니다. 

 

MainActivity.java


public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.textView);
        Button btnFadeIn = findViewById(R.id.btnFadeIn);
        Button btnFadeOut = findViewById(R.id.btnFadeOut);
        btnFadeOut.setVisibility(View.GONE);
        // 페이드 인 버튼 클릭 리스너
        btnFadeIn.setOnClickListener(view -> {
            AlphaAnimation fadeIn = new AlphaAnimation(0.0f, 1.0f);
            fadeIn.setDuration(1000); // 1초
            textView.setVisibility(View.VISIBLE);
            textView.startAnimation(fadeIn);
            btnFadeIn.setVisibility(View.GONE);
            btnFadeOut.setVisibility(View.VISIBLE);
        });

        // 페이드 아웃 버튼 클릭 리스너
        btnFadeOut.setOnClickListener(view -> {
            AlphaAnimation fadeOut = new AlphaAnimation(1.0f, 0.0f);
            fadeOut.setDuration(1000); // 1초
            textView.startAnimation(fadeOut);
            fadeOut.setAnimationListener(new AlphaAnimation.AnimationListener() {
                @Override
                public void onAnimationStart(android.view.animation.Animation animation) {}

                @Override
                public void onAnimationEnd(android.view.animation.Animation animation) {
                    textView.setVisibility(View.INVISIBLE); // 애니메이션 종료 후 숨기기
                    btnFadeOut.setVisibility(View.GONE);
                    btnFadeIn.setVisibility(View.VISIBLE);
                }

                @Override
                public void onAnimationRepeat(android.view.animation.Animation animation) {}
            });
        });
    }
}

 

 

 

activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#FFFFFF">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="텍스트 입니다"
        android:textSize="24sp"
        android:textColor="#000000"
        android:visibility="invisible" />

    <Button
        android:id="@+id/btnFadeIn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fade In"
        android:layout_marginTop="20dp" />

    <Button
        android:id="@+id/btnFadeOut"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Fade Out"
        android:layout_marginTop="10dp" />
</LinearLayout>

 

 

시연 영상입니다.