로티 애니메이션을 프로그래밍 방식으로 다시 칠할 수 있습니까?

나는 모라

json 파일 형태의 lottie 애니메이션이있는 경우 코드 또는 json 자체 내에서 다시 칠하는 방법이 있습니까?

(명확하게 말하면 After Effects를 사용하지 않고 할 수있는 방법이 있기를 바랍니다. 예를 들어 앱의 기본 색상을 변경하기로 결정하면 그렇게 할 방법이없는 한 애니메이션을 제외한 전체 앱이 변경됩니다.)

나는 모라

나는 그것을 알아. 이 예에서는 특정 레이어를 Color.RED로 다시 칠하고 싶다고 가정 해 보겠습니다.

LottieAnimationView, KeyPath 및 LottieValueCallback이 필요합니다.

private LottieAnimationView lottieAnimationVIew;
private KeyPath mKeyPath;
private LottieValueCallback<Integer> mCallback;

그런 다음 onCreate (또는 조각의 경우 onViewCreated)에서 findViewById가 포함 된 애니메이션과 lottieAnimationView에 대한 "addLottieOnCompositionLoadedListener"를 얻을 수 있습니다. 여기서 "mKeyPath"및 "mCallback"을 설정합니다.

lottieAnimationVIew = findViewById(R.id.animationView);

lottieAnimationView.addLottieOnCompositionLoadedListener(new LottieOnCompositionLoadedListener() {
  @Override
  public void onCompositionLoaded(LottieComposition composition) {
    mKeyPath = getKeyPath(); // This is your own method for getting the KeyPath you desire. More on that below.
    mCallback = new LottieValueCallback<>();
    mCallback.setValue(Color.RED);
    checkBox.addValueCallback(mKeyPath, LottieProperty.COLOR, mCallback);
  }
});

"LottieProperty.COLOR"인수는 변경할 속성을 지정합니다.

이 작업을 수행하는 더 좋은 방법이있을 수 있지만 변경하려는 특정 항목을 찾기위한 "getKeyPath"메서드가 있습니다. 원하는 것을 볼 수 있도록 모든 KeyPath를 기록합니다. 그런 다음 올바른 색인을 제공하면 반환합니다. 내가 원하는 것이 목록에서 5 번째이므로 하드 코딩 된 인덱스 4라는 것을 알았습니다.

private KeyPath getKeyPath() {
  List<KeyPath> keyPaths = lottieAnimationView.resolveKeyPath(new KeyPath("Fill", "Ellipse 1", "Fill 1"));
        
  for (int i = 0; i < keyPaths.size(); i++) {
    Log.i("KeyPath", keyPaths.get(i).toString());
  }
        
  if (keyPaths.size() == 5) {
    return keyPaths.get(4);
  }
  else {
    return null;
  }
}

"Fill", "Ellipse 1", "Fill 1"은 해당 키가있는 항목으로 만 목록을 좁히기 위해 제공 한 문자열이라는 점에 유의하십시오. 원하는 레이어가 그중에 포함될 것임을 알고 있기 때문입니다. 이를 수행하는 더 좋은 방법도있을 것입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

나는 절망의 언어로 애니메이션을 프로그래밍 할 수 있습니까?

분류에서Dev

아마존 웹 사이트에 "국가로 배송"이 표시됩니다. 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

분류에서Dev

로티 애니메이션을 GIF로 변환 할 수 있습니까?

분류에서Dev

JavaScript에서 시작된 다운로드를 프로그래밍 방식으로 취소 / 중지 할 수 있습니까?

분류에서Dev

런타임에 함수 / 메서드를 프로그래밍 방식으로 장식 할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 패킷에서 요청을 다시 만들 수 있습니까?

분류에서Dev

mongodb find ()에 대해 프로그래밍 방식으로 project ()를 무시할 수 있습니까?

분류에서Dev

AppDelegate에서 프로그래밍 방식으로 viewContoller를 탭 표시 줄에 추가 할 수 없습니다.

분류에서Dev

프로그래밍 방식으로 xml 레이아웃을 가져와 재사용 할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 레이블을 제거 할 수 없습니다.

분류에서Dev

Windows가 종료되거나 다시 시작되는 경우 프로그래밍 방식으로 수신 할 수있는 방법이 있습니까?

분류에서Dev

UICollectionView scrollDirection을 프로그래밍 방식으로 수정할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 segue를 수행 할 때 애니메이션이 표시되지 않습니다.

분류에서Dev

Android는 프로그래밍 방식으로 런처 활동을 시작할 수 없습니다.

분류에서Dev

시작 배경을 프로그래밍 방식으로 설정할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 Google지도를 캐시 할 수 있습니까?

분류에서Dev

UISegmentedControl을 프로그래밍 방식으로 다시 그릴 수 있습니까? 어떻게?

분류에서Dev

프로그래밍 방식으로 UIButton의 프레임을 변경할 수 없습니다.?

분류에서Dev

프로그래밍 방식으로 UIButton의 프레임을 변경할 수 없습니다.?

분류에서Dev

Highcharts. 프로그래밍 방식으로 데이터 레이블을 표시 할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 WKInterfaceGroup을 스크롤 할 수 있습니까?

분류에서Dev

GAE Datastore-Windows에서 프로그래밍 방식으로 LocalDevelopmentDatastore를 시작할 수 없습니다.

분류에서Dev

프로그래밍 방식으로 레이어에 기능을 추가 할 수 없습니다.

분류에서Dev

프로그래밍 방식으로 UITextView를 이동할 수 없습니다.

분류에서Dev

E4 애플리케이션을 시작한 후 어떻게 프로그래밍 방식으로 관점을 전환 할 수 있습니까?

분류에서Dev

프로그래밍 방식으로 Android에서 통화를 일시 중지 할 수 있습니까?

분류에서Dev

웹 서비스의 다른 WCF 끝점에 프로그래밍 방식으로 연결할 수 있습니까?

분류에서Dev

반응 양식으로 프로그래밍 방식으로 텍스트를 설정할 수 없습니다.

분류에서Dev

.scn 파일을 프로그래밍 방식으로 다운로드하여 실행할 수 있습니까?

Related 관련 기사

  1. 1

    나는 절망의 언어로 애니메이션을 프로그래밍 할 수 있습니까?

  2. 2

    아마존 웹 사이트에 "국가로 배송"이 표시됩니다. 프로그래밍 방식으로 어떻게 변경할 수 있습니까?

  3. 3

    로티 애니메이션을 GIF로 변환 할 수 있습니까?

  4. 4

    JavaScript에서 시작된 다운로드를 프로그래밍 방식으로 취소 / 중지 할 수 있습니까?

  5. 5

    런타임에 함수 / 메서드를 프로그래밍 방식으로 장식 할 수 있습니까?

  6. 6

    프로그래밍 방식으로 패킷에서 요청을 다시 만들 수 있습니까?

  7. 7

    mongodb find ()에 대해 프로그래밍 방식으로 project ()를 무시할 수 있습니까?

  8. 8

    AppDelegate에서 프로그래밍 방식으로 viewContoller를 탭 표시 줄에 추가 할 수 없습니다.

  9. 9

    프로그래밍 방식으로 xml 레이아웃을 가져와 재사용 할 수 있습니까?

  10. 10

    프로그래밍 방식으로 레이블을 제거 할 수 없습니다.

  11. 11

    Windows가 종료되거나 다시 시작되는 경우 프로그래밍 방식으로 수신 할 수있는 방법이 있습니까?

  12. 12

    UICollectionView scrollDirection을 프로그래밍 방식으로 수정할 수 있습니까?

  13. 13

    프로그래밍 방식으로 segue를 수행 할 때 애니메이션이 표시되지 않습니다.

  14. 14

    Android는 프로그래밍 방식으로 런처 활동을 시작할 수 없습니다.

  15. 15

    시작 배경을 프로그래밍 방식으로 설정할 수 있습니까?

  16. 16

    프로그래밍 방식으로 Google지도를 캐시 할 수 있습니까?

  17. 17

    UISegmentedControl을 프로그래밍 방식으로 다시 그릴 수 있습니까? 어떻게?

  18. 18

    프로그래밍 방식으로 UIButton의 프레임을 변경할 수 없습니다.?

  19. 19

    프로그래밍 방식으로 UIButton의 프레임을 변경할 수 없습니다.?

  20. 20

    Highcharts. 프로그래밍 방식으로 데이터 레이블을 표시 할 수 있습니까?

  21. 21

    프로그래밍 방식으로 WKInterfaceGroup을 스크롤 할 수 있습니까?

  22. 22

    GAE Datastore-Windows에서 프로그래밍 방식으로 LocalDevelopmentDatastore를 시작할 수 없습니다.

  23. 23

    프로그래밍 방식으로 레이어에 기능을 추가 할 수 없습니다.

  24. 24

    프로그래밍 방식으로 UITextView를 이동할 수 없습니다.

  25. 25

    E4 애플리케이션을 시작한 후 어떻게 프로그래밍 방식으로 관점을 전환 할 수 있습니까?

  26. 26

    프로그래밍 방식으로 Android에서 통화를 일시 중지 할 수 있습니까?

  27. 27

    웹 서비스의 다른 WCF 끝점에 프로그래밍 방식으로 연결할 수 있습니까?

  28. 28

    반응 양식으로 프로그래밍 방식으로 텍스트를 설정할 수 없습니다.

  29. 29

    .scn 파일을 프로그래밍 방식으로 다운로드하여 실행할 수 있습니까?

뜨겁다태그

보관