카테고리 없음

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

teamnova 2024. 11. 2. 12:00
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 을 사용해 확대가 끝나면 다시 되돌아오도록 설정합니다.

 

시연영상입니다.