Android 속성 애니메이션 원리 와 DataBinding

Android 속성 애니메이션 원리 와 DataBinding
이 제목 을 보 았 을 때 속성 애니메이션 과 DataBinding 사이 에 어떤 관계 가 있 는 지 궁금 할 수 있 습 니 다.내 가 개인 적 으로 이해 하 는 것 은 그들 내부 의 실현 사상 이 비슷 한 점 이 있다 는 것 이다.이 글 은 주로 안 드 로 이 드 속성 애니메이션 에 대한 지식 을 문 자 를 통 해 정리 하고 기록 하 며 내용 은 을 참고 하여 마지막 으로 저 에 게 속성 애니메이션 과 DataBinding 을 이렇게 이해 하 는 이 유 를 알려 줄 것 입 니 다.
Android 애니메이션 개요:
Android 의 애니메이션 은 세 가지 로 나 눌 수 있 습 니 다.View 애니메이션,프레임 애니메이션 과 속성 애니메이션 입 니 다.View 애니메이션 은 장면 의 대상 에 대한 이미지 변화(이동,크기 조정,회전,투명도)를 통 해 애니메이션 효 과 를 나타 내 고 View 애니메이션 은 사용자 정 의 를 지원 합 니 다.프레임 애니메이션 은 일련의 이미 지 를 순서대로 재생 하여 애니메이션 효 과 를 나타 내 고 그림 전환 애니메이션 으로 간단하게 이해 할 수 있 으 며 그림 이 대회 가 지나 면 OOM 을 초래 할 수 있다.속성 애니메이션 은 동적 으로 대상 의 속성 을 바 꾸 어 애니메이션 효 과 를 얻 을 수 있 습 니 다.속성 애니메이션 은 API 11 의 새로운 기능 입 니 다.낮은 버 전에 서 호 환 라 이브 러 리 를 통 해 사용 해 야 합 니 다.
속성 애니메이션:
속성 애니메이션 은 뷰 뿐만 아니 라 임의의 대상 의 속성 을 애니메이션 할 수 있 습 니 다.한 시간 간격 으로 대상 이 하나의 속성 값 에서 다른 속성 값 으로 변 하 는 것 을 완성 할 수 있 습 니 다.따라서 속성 애니메이션 은 거의 못 하 는 것 이 없다.대상 이 이 속성 만 있 으 면 애니메이션 효 과 를 실현 할 수 있다.
사용:
속성 애니메이션 에는 ValueAnimator,ObjectAnimator,Animator Set 등 개념 이 있 습 니 다.그 중에서 ObjectAnimator 는 ValueAnimator 에서 계승 하여 속성 애니메이션 을 실현 하 는 데 사 용 됩 니 다.Animator Set 은 애니메이션 집합 으로 애니메이션 을 정의 할 수 있 습 니 다.이들 은 사용 하기에 간단 합 니 다.여기 서 예 를 들 지 않 습 니 다.속성 애니메이션 은 코드 를 통 해 이 루어 지 는 것 을 제외 하고 View 애니메이션 과 마찬가지 로 XML 을 통 해 정의 할 수 있 습 니 다.속성 애니메이션 은 res/animator 디 렉 터 리 에서 정의 해 야 합 니 다.그 중에서 set,objectAnimator 와 animator 라벨 은 각각 Animator Set,ObjectAnimator 와 ValueAnimator 에 대응 합 니 다.속성 애니메이션 은 XML 을 통 해 이 루어 질 수 있 지만 실제 개발 에 서 는 코드 를 사용 하여 이 루어 집 니 다.한 속성의 시작 값 을 미리 정할 수 없 는 경우 가 많 기 때 문 입 니 다.
플러그 인과 평가 기:
TimeInterpolator 는 시간 플러그 인 으로 번역 되 었 습 니 다.그 역할 은 시간 이 흐 르 는 백분율 에 따라 현재 속성 값 이 변 하 는 백분율 을 계산 하 는 것 입 니 다.시스템 에 미리 설 치 된 것 은 LinearInterpolator(선형 플러그 인:등 속 애니메이션)입 니 다.AccelerateDecelerateInterpolator(가속 감속 플러그 인:애니메이션 양쪽 이 느 리 고 중간 이 빠르다)와 DecelerateInterpolator(감속 플러그 인:애니메이션 이 점점 느 려 진다)등.
TypeEvaluator 는 유형 평가 알고리즘 으로 번역 되 었 으 며,평가 기 라 고도 합 니 다.현재 속성 이 변 경 된 백분율 에 따라 변 경 된 속성 값 을 계산 하 는 역할 을 합 니 다.시스템 에 미리 설 치 된 것 은 IntEvaluator(정형 속성 에 대한),Float Evaluator(부동 소수점 속성 에 대한)와 ArgbEvaluator(Color 속성 에 대한)입 니 다.속성 애니메이션 의 플러그 인(Interpolator)과 평가 기(TypeEvaluator)는 매우 중요 합 니 다.이것 은 비 등 속 애니메이션 을 실현 하 는 중요 한 수단 입 니 다.
속성 애니메이션 모니터:
속성 애니메이션 은 애니메이션 의 재생 과정 을 감청 하기 위해 감청 기 를 제공 합 니 다.주로 Animator UpdateListener 와 Animator Listener 가 있 습 니 다.Animator Listener 는 애니메이션 의 시작,끝,취소,반복 재생 을 감청 할 수 있 으 며 개발 의 편 의 를 위해 시스템 은 Animator Listener Adapter 라 는 종 류 를 제공 합 니 다.그 는 Animator Listener 의 어댑터 류 로 이 네 가지 감청 방법 을 선택 할 수 있 습 니 다.Animator UpdateListener 는 비교적 특수 하 다.그 는 전체 애니메이션 과정 을 감청 할 것 이다.애니메이션 은 여러 프레임 으로 구성 되 고 한 프레임 을 재생 할 때마다 해당 하 는 감청 방법 이 한 번 호출 된다.
임의의 속성 애니메이션 만 들 기:
속성 애니메이션 은 임의의 속성 에 애니메이션 효 과 를 추가 할 수 있 습 니 다.만약 에 우리 가 button 에 애니메이션 을 추가 하려 면 이 button 의 폭 을 100 px 늘 려 야 합 니 다.우 리 는 이렇게 쓸 수 있 습 니 다.

@Override
public void onClick(View v){

   ObjectAnimator.ofInt(v,"width",100).setDuration(1000).start();

}

그러나 단 추 를 누 르 면 효과 가 없습니다.임의의 속성 에 대해 애니메이션 을 실현 할 수 있다 고 했 잖 아 요.사실은 효과 가 없 는 것 이 옳 습 니 다.다음 에 속성 애니메이션 의 원 리 를 분석 하 겠 습 니 다.속성 애니메이션 은 애니메이션 역할 을 하 는 대상 에 게 이 속성의 get 과 set 방법 을 제공 하도록 요구 합 니 다.속성 애니메이션 은 외부 에서 전달 하 는 이 속성의 초기 값 과 최종 값 에 따라애니메이션 의 효과 로 set 방법 을 여러 번 호출 합 니 다.매번 set 방법 에 전달 하 는 값 이 다 릅 니 다.정확히 말 하면 시간 이 지 날수 록 전달 하 는 값 이 최종 값 에 가 까 워 집 니 다.요약 하면 저 희 는 object 의 속성 abc 에 대해 애니메이션 을 만 듭 니 다.애니메이션 을 발효 시 키 려 면 다음 과 같은 두 가지 조건 을 동시에 만족 시 켜 야 합 니 다.
1.object 는 setabc 방법 을 제공 해 야 합 니 다.애니메이션 을 할 때 초기 값 을 전달 하지 않 으 면 getabc 방법 도 제공 해 야 합 니 다.시스템 이 abc 속성의 초기 값 을 가 져 가 야 하기 때 문 입 니 다.(이것 이 만족 하지 않 으 면 프로그램 은 직접 Crash)
2.object 의 setabc 가 속성 abc 에 대한 변 화 는 특정한 방법 으로 반영 되 어야 합 니 다.예 를 들 어 UI 의 변 화 를 가 져 올 수 있 습 니 다.(이것 이 만족 하지 않 으 면 애니메이션 은 효과 가 없 지만 Crash 가 없습니다)
이것 은 DataBinding 의 사상 과 같 습 니 다.여기 object 는 DataBinding 의 ViewModel 에 대응 합 니 다.ViewModel 의 구성원 변수 set 방법 에서 DataBinding 에 view 의 내용 을 업데이트 하 라 고 알려 야 합 니 다.다음 과 같 습 니 다.

  public void setName(String name) {
    this.name = name;
    notifyPropertyChanged(BR.name);

  }

상기 문제 에 대해 공식 문 서 는 우리 에 게 세 가지 해결 방법 이 있다 고 알려 준다.
  • 대상 에 get 과 set 방법 을 추가 하고 권한 이 있다 면
  • 하나의 유형 으로 원시 대상 을 포장 하고 간접 적 으로 get 과 set 방법
  • 을 제공한다.
  • ValueAnimator 를 사용 하여 애니메이션 과정 을 감청 하고 스스로 속성의 변 화 를 실현 한다
  • 읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

    좋은 웹페이지 즐겨찾기