Android studio 是否有可能通过编程方式重新激活乐蒂动画?

Android studio 是否有可能通过编程方式重新激活乐蒂动画?,android-studio,lottie,lottie-android,Android Studio,Lottie,Lottie Android,如果我有一个json文件形式的乐透动画,有没有一种方法可以在代码中甚至json本身中重新调用它 (说清楚点,我希望有一种不涉及后效的方法。例如,如果我决定更改我的应用程序的原色,除非有办法,否则整个应用程序都会更改,动画除外。)我想出来了。对于本例,假设我想将特定层重新着色为Color.RED 您需要您的LottieAnimationView、KeyPath和LottieValueCallback private lottieeanimationview lottieeanimationview

如果我有一个json文件形式的乐透动画,有没有一种方法可以在代码中甚至json本身中重新调用它


(说清楚点,我希望有一种不涉及后效的方法。例如,如果我决定更改我的应用程序的原色,除非有办法,否则整个应用程序都会更改,动画除外。)

我想出来了。对于本例,假设我想将特定层重新着色为Color.RED

您需要您的LottieAnimationView、KeyPath和LottieValueCallback

private lottieeanimationview lottieeanimationview;
私钥路径mKeyPath;
私人乐透价值回调mCallback;
然后在onCreate(或为片段创建的OnView)中,您将获得带有findViewById的动画,以及将“addLottieOnCompositionLoadedListener”添加到lottieAnimationView中,在该视图中,您将设置“mKeyPath”和“mCallback”:

lottieeanimationview=findviewbyd(R.id.animationView);
lottieAnimationView.addLottieOnCompositionLoadedListener(新的LottieOnCompositionLoadedListener(){
@凌驾
已加载组合上的公共空隙(乐透组合组合){
mKeyPath=getKeyPath();//这是您自己获取所需密钥路径的方法。有关详细信息,请参见下文。
mCallback=新的LottieValueCallback();
mCallback.setValue(颜色为红色);
addValueCallback(mKeyPath,LottieProperty.COLOR,mCallback);
}
});
参数“LottieProperty.COLOR”指定要更改的属性

也许有更好的方法可以做到这一点,但这里是我的“getKeyPath”方法,用于查找我想要更改的特定内容。它将记录每个密钥路径,以便您可以查看所需的密钥路径。一旦您提供了正确的索引,它就会返回它。我看到我想要的是列表中的第5个,因此硬编码索引是4

private KeyPath getKeyPath(){
List KeyPath=lottieAnimationView.resolveKeyPath(新的KeyPath(“填充”、“椭圆1”、“填充1”));
对于(int i=0;i
请注意,“Fill”、“Ellipse 1”、“Fill 1”是我提供的字符串,用于将列表缩小到仅包含这些键的字符串,因为我知道我想要的层将位于这些键中。可能还有更好的方法来做到这一点