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 을 사용해 확대가 끝나면 다시 되돌아오도록 설정합니다.
시연영상입니다.