사용자가 버튼을 눌렀을 때 크기가 축소되도록하려면 어떻게해야합니까?

콘라드 차이코프스키

저는 모바일 게임을 개발 중입니다. 게임에서 사용자가 버튼을 누르기 전에 버튼을 눌러 게임을 '재미'하게 만들고 버튼이 더 빠르고 빠른 속도로 줄어들 기 때문에 사용자가 하나의 버튼을 누르면 다른 버튼이 팝업됩니다. 더 빨리 줄어 듭니다. 지금까지 사용자 입력 및 버튼 축소를 처리하는이 코드가 있지만 일단 누르면 애니메이션이 없으면 즉시 '축소'크기로 스냅됩니다.이 문제를 해결하는 방법을 모르겠습니다.

button.setOnClickListener(new Button.OnClickListener(){
        @Override
        public void onClick(View arg0) {
            ViewGroup.LayoutParams params = button.getLayoutParams();
            Integer value = 120;
            while(value >= 2) {
                value = value - 1;
                SystemClock.sleep(50);
                params.width = value;
                params.height = value;
                button.setLayoutParams(params);
            };
        }
    });

나는 SystemClock.sleep(50)그것이 스냅되는 이유라고 생각했기 때문에 줄을 추가했지만 (즉 애니메이션을 보지 못했기 때문에 너무 빠르다) 버튼의 크기가 업데이트 될 때까지 앱이 멈추기 때문에 그렇지 않습니다.

추신 나는 모바일 앱 개발에 관해서는 아주 새롭습니다.

피터 알렉산더 크리스티안 스

편집하다

원래 게시물에 쓴 내용은 잊어 버려. 아래 코드를 시도해보고 이것이 도움이되는지 알려주십시오.

final ValueAnimator valueAnimator = ValueAnimator.ofFloat(1.0f, 0.0f); //start and end value
        valueAnimator.setDuration(2000); //you can replace 2000 with a variable you can change dynamically
        valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                float animatedValue = (float) animation.getAnimatedValue();
                button.setScaleX(animatedValue);
                button.setScaleY(animatedValue);
            }
        });
        valueAnimator.start();

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                valueAnimator.pause();
            }
        });

원래 답변

나는 0X0nosugar의 제안을 따를 것입니다.

Android 파일 트리의 res 디렉토리 아래에 Android 리소스 디렉토리를 추가하고 (res 폴더> 새로 만들기를 마우스 오른쪽 버튼으로 클릭) "anim"이라고합니다. Android Studio는 해당 이름을 사용하는 경우 애니메이션을 보관하는 폴더로 자동 처리합니다. anim-folder> new> Animation 리소스 파일을 다시 마우스 오른쪽 버튼으로 클릭합니다. 원하는 이름을 지정하십시오. 내 예에서는 이름을 button_animator로 지정했습니다.

파일 트리는 다음과 같습니다.

여기에 이미지 설명 입력

button_animator.xml은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="0.1"
        android:fromYScale="1.0"
        android:toYScale="0.1"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="500" />

</set>

다음 라인을 사용하여 버튼의 끝 스케일을 조정할 수 있습니다.

android:toXScale="0.1"

android:toYScale="0.1"

코드 내에서 애니메이션을 동적으로 조정할 수 있습니다.

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Animation shrinkButton = AnimationUtils.loadAnimation(MainActivity.this, R.anim.button_animator); //reference the animator
                shrinkButton.setDuration(5000); //dynamically set the duration of your animation
                button.startAnimation(shrinkButton); //start the animation. Since it is inside an onclicklistener, the animation start on a button click event

                shrinkButton.setAnimationListener(new Animation.AnimationListener() { //you could use an AnimationListener to do something on certain event, like at the end of the animation
                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) { //you probably want to something onAnimationEnd, otherwise the button will snap back into its original size.

                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });

            }
        });

onAnimationEnd에서 애니메이션이 끝날 때 무엇을할지 결정해야합니다. 몇 가지 아이디어 :

@Override
public void onAnimationEnd(Animation animation) { //you probably want to something onAnimationEnd, otherwise the button will snap back into its original size.
    button.setScaleX(0.1f); //same size as in toScale size in the animator xml
    button.setScaleY(0.1f);
}

또는 버튼이 보이지 않게하려면 :

@Override
public void onAnimationEnd(Animation animation) {
    button.setVisibility(View.INVISIBLE);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

버튼을 눌렀을 때 GUI에 구성 요소 행을 추가하려면 어떻게해야합니까?

분류에서Dev

버튼을 눌렀을 때 두 이미지가 움직이기 시작하도록하려면 어떻게해야합니까?

분류에서Dev

JPanel에 실시간 시간을 추가하고 버튼을 눌렀을 때 다른 JPanel에 시간을 추가하려면 어떻게해야합니까?

분류에서Dev

matplotlib 버튼 위젯을 눌렀을 때가 아니라 눌렀을 때 작동하도록합니다.

분류에서Dev

버튼을 놓을 때 While 루프가 종료 / 중단되도록하려면 어떻게해야합니까?

분류에서Dev

사용자가 "화면 인쇄"버튼을 눌렀을 때 그림을 숨기는 방법이 있습니까?

분류에서Dev

사용자가 버튼을 눌렀을 때 입력 영역에서 어떻게 추가합니까?

분류에서Dev

사용자가 Enter 키를 누를 때 클릭되도록 내 페이지에 버튼을 연결하려면 어떻게해야합니까?

분류에서Dev

서버 찾아보기 버튼을 눌렀을 때 FCKeditor의 주소 표시 줄을 숨기려면 어떻게해야합니까?

분류에서Dev

헤더에 추가 된 버튼을 사용할 때 아코디언 패널이 축소되는 것을 방지하려면 어떻게해야합니까?

분류에서Dev

양식에 사용자 정의 컨트롤을 추가 할 때 단추 크기가 조정되지 않도록하려면 어떻게해야합니까?

분류에서Dev

ActionEvent는 어떻게 작동하며 버튼을 눌렀을 때 작업을 수행하기 위해 객체가 어떻게 생성됩니까?

분류에서Dev

사용자가 ESC 버튼을 눌렀을 때 프롬프트를 어떻게 닫습니까?

분류에서Dev

버튼을 눌렀을 때 div가 페이드 인되지 않습니다.

분류에서Dev

버튼을 눌렀을 때 CheckBox가 작동하지 않습니다.

분류에서Dev

버튼을 눌렀을 때 새로운 장면을 페이드 인하려면 어떻게해야합니까?

분류에서Dev

대화 상자에서 Esc 키를 눌렀을 때 트리거 버튼을 표시하려면 어떻게해야합니까?

분류에서Dev

버튼을 눌렀을 때 각도 + 유성 카운터 증가

분류에서Dev

setOnClickListener ()가있는 버튼이 다른 버튼을 눌렀을 때 완료되지 않은 작업은 어떻게합니까?

분류에서Dev

내 React like 버튼이 마음에 들지 않을 때 증가하고 마음에 들면 감소하도록하려면 어떻게해야합니까?

분류에서Dev

장치 뒤로 버튼을 눌렀을 때 데이터를 지우려면 어떻게해야합니까?

분류에서Dev

스크롤 가능한 목록을 최대 크기로 설정하지만 필요하지 않을 때는 축소하려면 어떻게해야합니까?

분류에서Dev

Enter 버튼을 눌렀을 때 키보드가 열리지 않도록 하시겠습니까?

분류에서Dev

JQuery가 버튼을 닫도록하려면 어떻게해야합니까?

분류에서Dev

관찰 가능한 스크롤보기를 사용할 때 내 탭보기가 전체 화면을 채우도록하려면 어떻게해야합니까?

분류에서Dev

부모가 최소 높이를 가질 때 버튼이 사용 가능한 모든 공간을 차지하게하려면 어떻게해야합니까?

분류에서Dev

확대 / 축소 할 때 탐색의 활성 상태가 공간을 생성하지 않도록하려면 어떻게해야합니까?

분류에서Dev

Jquery를 사용하여 입력 요소가 비어있을 때 버튼을 비활성화하려면 어떻게해야합니까?

분류에서Dev

nil, Swift iOS로 인해 버튼을 눌렀을 때 소리가 나지 않습니다.

Related 관련 기사

  1. 1

    버튼을 눌렀을 때 GUI에 구성 요소 행을 추가하려면 어떻게해야합니까?

  2. 2

    버튼을 눌렀을 때 두 이미지가 움직이기 시작하도록하려면 어떻게해야합니까?

  3. 3

    JPanel에 실시간 시간을 추가하고 버튼을 눌렀을 때 다른 JPanel에 시간을 추가하려면 어떻게해야합니까?

  4. 4

    matplotlib 버튼 위젯을 눌렀을 때가 아니라 눌렀을 때 작동하도록합니다.

  5. 5

    버튼을 놓을 때 While 루프가 종료 / 중단되도록하려면 어떻게해야합니까?

  6. 6

    사용자가 "화면 인쇄"버튼을 눌렀을 때 그림을 숨기는 방법이 있습니까?

  7. 7

    사용자가 버튼을 눌렀을 때 입력 영역에서 어떻게 추가합니까?

  8. 8

    사용자가 Enter 키를 누를 때 클릭되도록 내 페이지에 버튼을 연결하려면 어떻게해야합니까?

  9. 9

    서버 찾아보기 버튼을 눌렀을 때 FCKeditor의 주소 표시 줄을 숨기려면 어떻게해야합니까?

  10. 10

    헤더에 추가 된 버튼을 사용할 때 아코디언 패널이 축소되는 것을 방지하려면 어떻게해야합니까?

  11. 11

    양식에 사용자 정의 컨트롤을 추가 할 때 단추 크기가 조정되지 않도록하려면 어떻게해야합니까?

  12. 12

    ActionEvent는 어떻게 작동하며 버튼을 눌렀을 때 작업을 수행하기 위해 객체가 어떻게 생성됩니까?

  13. 13

    사용자가 ESC 버튼을 눌렀을 때 프롬프트를 어떻게 닫습니까?

  14. 14

    버튼을 눌렀을 때 div가 페이드 인되지 않습니다.

  15. 15

    버튼을 눌렀을 때 CheckBox가 작동하지 않습니다.

  16. 16

    버튼을 눌렀을 때 새로운 장면을 페이드 인하려면 어떻게해야합니까?

  17. 17

    대화 상자에서 Esc 키를 눌렀을 때 트리거 버튼을 표시하려면 어떻게해야합니까?

  18. 18

    버튼을 눌렀을 때 각도 + 유성 카운터 증가

  19. 19

    setOnClickListener ()가있는 버튼이 다른 버튼을 눌렀을 때 완료되지 않은 작업은 어떻게합니까?

  20. 20

    내 React like 버튼이 마음에 들지 않을 때 증가하고 마음에 들면 감소하도록하려면 어떻게해야합니까?

  21. 21

    장치 뒤로 버튼을 눌렀을 때 데이터를 지우려면 어떻게해야합니까?

  22. 22

    스크롤 가능한 목록을 최대 크기로 설정하지만 필요하지 않을 때는 축소하려면 어떻게해야합니까?

  23. 23

    Enter 버튼을 눌렀을 때 키보드가 열리지 않도록 하시겠습니까?

  24. 24

    JQuery가 버튼을 닫도록하려면 어떻게해야합니까?

  25. 25

    관찰 가능한 스크롤보기를 사용할 때 내 탭보기가 전체 화면을 채우도록하려면 어떻게해야합니까?

  26. 26

    부모가 최소 높이를 가질 때 버튼이 사용 가능한 모든 공간을 차지하게하려면 어떻게해야합니까?

  27. 27

    확대 / 축소 할 때 탐색의 활성 상태가 공간을 생성하지 않도록하려면 어떻게해야합니까?

  28. 28

    Jquery를 사용하여 입력 요소가 비어있을 때 버튼을 비활성화하려면 어떻게해야합니까?

  29. 29

    nil, Swift iOS로 인해 버튼을 눌렀을 때 소리가 나지 않습니다.

뜨겁다태그

보관