私は使用していますAndroid用ロッティアプリにアニメーションを追加します。このアプリでは、設定からプライマリ カラーとアクセント カラーを選択できます。透明な背景のアニメーションを使用しています。アニメーションを選択した色に合わせるには、アニメーションにカラー オーバーレイを追加したいと思います。この方法により、アニメーション ファイルを 1 つ用意しながら、プログラムで色を設定できます。
カラーオーバーレイを追加してアニメーションを操作する方法をご存知の方はいらっしゃいますか?
ベストアンサー1
カラー フィルターを適用するには、現時点では次の 3 つが必要です。
- KeyPath (編集したいコンテンツの名前)
- LottieProperty (編集したいプロパティの名前)
- LottieValueCallback (アニメーションの再レンダリングごとに呼び出されるコールバック)
レイヤー名は、アニメーションの JSON 内でタグ「nm」によって見つかります。
フルカラーオーバーレイを追加します。
LottieAnimationView animationView = findViewById(R.id.animation_view);
animationView.addValueCallback(
new KeyPath("**"),
LottieProperty.COLOR_FILTER,
new SimpleLottieValueCallback<ColorFilter>() {
@Override
public ColorFilter getValue(LottieFrameInfo<ColorFilter> frameInfo) {
return new PorterDuffColorFilter(Color.GREEN, PorterDuff.Mode.SRC_ATOP);
}
}
);
単一レイヤーのカラーオーバーレイ(「チェックマーク」と呼ばれるレイヤー)を追加します。
LottieAnimationView animationView = findViewById(R.id.animation_view);
animationView.addValueCallback(
new KeyPath("checkmark", "**"),
LottieProperty.COLOR_FILTER,
new SimpleLottieValueCallback<ColorFilter>() {
@Override
public ColorFilter getValue(LottieFrameInfo<ColorFilter> frameInfo) {
return new PorterDuffColorFilter(Color.CYAN, PorterDuff.Mode.SRC_ATOP);
}
}
);
カラーオーバーレイを削除します。
LottieAnimationView animationView = findViewById(R.id.animation_view);
animationView.addValueCallback(new KeyPath("**"), LottieProperty.COLOR_FILTER,
new SimpleLottieValueCallback<ColorFilter>() {
@Override
public ColorFilter getValue(LottieFrameInfo<ColorFilter> frameInfo) {
return null;
}
}
);
詳細は以下をご覧ください公式文書。
こちらもご覧くださいサンプルリポジトリ
コード スニペットの結果の図を以下に示します。