Android Studio 버튼을 누를 때 애니메이션을 만들어 보십시오.

11597 단어 Android

개시하다


Android Studio 버튼에는 처음부터 누르는 동작이 있습니다.
하지만 자신의 버튼을 눌렀을 때의 동작을 해보고 싶으면 그 방법을 적어 놓으세요.

하고 싶은 일


나는 버튼을 눌렀을 때 사이즈를 줄이고 버튼을 눌렀을 때 사이즈를 복원하는 애니메이션을 만들고 싶다.

사용자 지정 버튼 범주 만들기


우선 단추를 눌렀을 때의 동작을 설명하기 위해 단추 종류를 계승한 사용자 정의 단추 종류를 만듭니다.
배경색과 텍스트가 잘 어울립니다.
CustomButton.java

public class CustomButton extends Button {

    public CustomButton(Context context, AttributeSet attr) {
        super(context, attr);

        this.setBackgroundColor(Color.RED);
        this.setText("カスタムボタン");
    }

}

setPresed 다시 쓰기 방법


버튼 클래스에는 setPreseed 방법이 있습니다. 이 방법을 다시 써서 단추를 눌렀을 때의 처리를 설정할 수 있습니다.
CustomButton.java
    /* ボタンプレスイベント */
    @Override
    public void setPressed(boolean pressed) {
        if (pressed) {
            /* 押してる時 */
        } else {
            /* 放した時 */
        }

        super.setPressed(pressed);
    }
setPresed 방법의 매개 변수는boolean형pressed가 있습니다.
단추를 눌렀을 때 진짜이고, 눌렀을 때 가짜이기 때문에if문구로 눌렀을 때의 처리와 눌렀을 때의 처리를 설명할 수 있습니다.

SccalleAnimation 클래스를 사용하여 애니메이션 내용 기술하기


이번에는 버튼을 누를 때만 치수가 바뀌어서 ScaleAnimation을 사용했습니다.

ScaleAnimation 클래스


Android Developers : https://developer.android.com/reference/android/view/animation/ScaleAnimation
참고로 Scale Animation 수준에는 객체 축척을 제어하는 애니메이션이라고 쓰여 있습니다.
즉, 버튼, 뷰의 확대 및 축소와 같은 애니메이션을 만들 수 있는 카테고리입니다.

ScleAnimation 클래스 사용 방법


※ ScaleAnimation 설정은 xml에서도 기술할 수 있지만, 제가 xml을 잘 못하니 자바로 기술하게 해주세요.
ScaleAnimation 클래스는 다음과 같이 선언합니다.
ScaleAnimation scaleAnimation = new ScaleAnimation(
        fromX, toX, fromY, toY,
        pivotXType, pivotXvalue,
        pivotYType, pivotYvalue
);
scaleAnimation.setDuration(150);
scaleAnimation.setRepeatCount(0);
scaleAnimation.setFillAfter(true);
this.startAnimation(scaleAnimation);

설명
fromX (float)
애니메이션 시작 시 가로 길이 표시 축척
toX (float)
애니메이션이 끝날 때 가로 길이 표시 축척
fromY (float)
애니메이션 시작 시 세로 배율
toY (float)
애니메이션이 끝날 때의 세로 표시 축척
pivotXType (int)
pivotXValue의 해석 방법
pivotXValue (float)
객체 축척의 X축 중심 좌표
pivotYType (int)
pivotYValue의 해석 방법
pivotYValue (float)
객체의 Y축 중심 좌표 축척
메서드 이름
설명
setDuration
애니메이션 시간.밀리초 설명
setRepeatCount
애니메이션 반복
setFillAfter
애니메이션이 끝날 때의 크기가 뷰에 직접 반영되는지 여부
startAnimation
애니메이션 시작
pivotXType, pivotYType 세 가지 중에서 선택합니다.

  • Animation.ABSOLUTE: 왼쪽 상단에서 보이는 픽셀 절대값입니다.pivotX(Y) Value는 120
  • 과 같이 pixel의 수량으로 설명합니다.

  • Animation.RELATIVE_TO_SELF: 내 치수 배율.pivotX(Y) Value 0.0f~1.0f 비율로 기술

  • Animation.RELATIVE_TO_PARENT: 모 치수의 배율입니다.pivotX(Y) Value 0.0f~1.0f 비율로 기술
  • 예를 들어 다음 코드는 단추의 중심을 축으로 0.5배 줄인다.
    ScaleAnimation scaleAnimation = new ScaleAnimation(
            1.0f, 0.5f, 1.0f, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f
    );
    

    다음은 ScreAnimation 클래스를 사용하여 버튼을 누를 때의 확대 및 축소 설정에 대해 설명합니다.
    CustomButton.java
    /* ボタンプレスイベント */
    @Override
    public void setPressed(boolean pressed) {
        if (pressed) {
            /* 押してる時 */
            ScaleAnimation scaleAnimation = new ScaleAnimation(
                    1.0f, 0.6f / 1.0f, 1.0f, 0.6f / 1.0f,
                    Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f
            );
            scaleAnimation.setDuration(150);
            scaleAnimation.setRepeatCount(0);
            scaleAnimation.setFillAfter(true);
    
            this.startAnimation(scaleAnimation);
        } else {
            /* 放した時 */
            ScaleAnimation scaleAnimation = new ScaleAnimation(
                    0.6f / 1.0f, 1.0f, 0.6f / 1.0f, 1.0f,
                    Animation.RELATIVE_TO_SELF, 0.5f,
                    Animation.RELATIVE_TO_SELF, 0.5f
            );
            scaleAnimation.setDuration(150);
            scaleAnimation.setRepeatCount(0);
            scaleAnimation.setFillAfter(true);
    
            this.startAnimation(scaleAnimation);
        }
    
        super.setPressed(pressed);
    }
    

    실행 결과



    참고 문헌


    안드로이드는 버튼에 간단하게'누르는 느낌'- Qita: https://qiita.com/hsakurai2/items/a4356bd7bf0aac26b0cd
    Android Score Animation 확대 축소 애니메이션: https://akira-watson.com/android/scale-animation.html

    좋은 웹페이지 즐겨찾기