본문 바로가기
카테고리 없음

[Java][Android] ViewPropertyAnimator 사용해서 간단한 애니메이션 적용하기

by teamnova 2024. 11. 2.
728x90

안녕하세요

이번에는 ViewPropertyAnimator를 사용해서 버튼에 간단한 애니메이션을 적용해보도록 하겠습니다.

 

버튼을 클릭하면, 버튼 크기가 확대되었다가 다시 원래대로 되돌아오도록 구현해보겠습니다.

 

전체 코드입니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // 버튼 참조
    Button btnAnimate = findViewById(R.id.btnAnimate);

    // 버튼 클릭 이벤트
    btnAnimate.setOnClickListener(v -> performAnimation(v));

  }

  // 애니메이션 메서드
  private void performAnimation(View view) {
    // ViewPropertyAnimator를 사용해 애니메이션 설정
    view.animate()
        .scaleX(1.2f)  // X축으로 1.2배 확대
        .scaleY(1.2f)  // Y축으로 1.2배 확대
        .setDuration(200)  // 애니메이션 지속 시간 (밀리초)
        .withEndAction(() -> view.animate()
            .scaleX(1.0f)  // X축으로 원래 크기
            .scaleY(1.0f)  // Y축으로 원래 크기
            .setDuration(200))  // 복원 애니메이션 시간
        .start();
  }
}

 

 

activity_main.xml

<!-- res/layout/activity_main.xml -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <!-- 애니메이션 버튼 -->
    <Button
        android:id="@+id/btnAnimate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="버튼을 눌러주세요"
        android:layout_centerInParent="true"/>
</RelativeLayout>

 

scaleX 와 scaleY 로 버튼을 1.2배 확대하고, setDuration(200) 으로 애니메이션 지속시간을 정합니다.

withEndAction 을 사용해 확대가 끝나면 다시 되돌아오도록 설정합니다.

 

시연영상입니다.