我有一个片段,这里是onCreateView方法:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
mView = inflater.inflate(R.layout.fragment_added_to_cart_anim, container, false);
ButterKnife.bind(this, mView);
mAddedToCartAnimation.setAnimation("checked_done_.json");
mAddedToCartAnimation.loop(false);
mAddedToCartAnimation.playAnimation();
// Remove fragment when animation is finished.
return mView;
}
Run Code Online (Sandbox Code Playgroud)
我需要getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();
在lottie动画结束时删除片段.如果我理解正确,当isAnimating()
lottie方法返回false时动画已经结束,因为在我的配置中动画不循环,这是我应该删除当前片段.但我不能只使用if语句,因为当它被执行时,动画可能仍在继续.
当lottie动画结束时,我需要一种方法来删除片段,我该怎么做?
我目前正在玩适用于 Android的 AirBnB 的 Lottie库,但我在LottieAnimationView
Z 排序方面遇到了问题。无论我是否将 LottieAnimationView 放在 的顶部RelativeLayout
,它总是出现在布局中的所有其他元素之上,例如:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="@dimen/spacing_lrg"
tools:context="com.myapp.SplashActivity">
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/animation_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:lottie_fileName="test.json"/>
<! -- Other Elements that should appear on top of the background animation -->
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我也尝试将LottieAnimationView
的高程设置为 0,但没有成功解决问题。有没有人知道如何解决这个问题,或者这只是图书馆的限制?另外,如果是限制,是什么原因造成的?
编辑:
这可能已在库更新中修复,因为此问题发生在库的早期版本中(因为这是在 2 年前发布的)。我会验证是否是这种情况,如果是这样,我会接受一些东西来关闭这篇文章。我刚刚继续前进,但这个问题又重新引起了人们的注意。
我有一个 lottie 动画文件,当我把它放在视图中时,由于文件的内部填充,它变得太小了。所以我在 xml 中使用了 lottie_scale 属性,并且在一些像这样的资源中提到了 LottieComposition但没有成功。
有什么解决办法吗?
我正在使用Lottie for Android在应用中添加一些动画.在此应用程序中,可以通过设置选择主色和强调色.我正在使用具有透明背景的动画.为了使动画适合所选择的颜色,我想为动画添加颜色叠加,这样我可以有一个动画文件,但我可以通过编程方式设置颜色.
有没有人知道如何通过添加颜色叠加来操纵动画?
我有一个 After Effects 动画,超级简单,一个正方形四处移动(AE 形状)。我使用 Bodymovin 将动画导出为 .json,并在我的项目中使用 Lottie 添加 json 文件。到现在为止还挺好。
问题从这里开始 --> 在运行时,用我在我的项目中也有的图像替换那个“正方形”。因为这个图片可能会发生变化,我无法静态添加到我的AE动画中,所以需要在运行时动态添加。几乎没有关于如何在 Android 中执行此操作的信息?
我收到了多个应使用 Lottie 库按顺序播放的动画文件
我目前正在尝试做的是重用相同的 LottieAnimationView 并在第一个动画完成时设置下一个动画。代码如下所示:
private fun playFirstAnimation() {
binding.animation.setAnimation(R.raw.progress_1)
binding.animation.repeatCount = 2
binding.animation.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationRepeat(animation: Animator?) = Unit
override fun onAnimationCancel(animation: Animator?) = Unit
override fun onAnimationStart(animation: Animator?) = Unit
override fun onAnimationEnd(animation: Animator?) {
binding.animation.removeAnimatorListener(this)
notifyFirstAnimationFinished()
playSecondAnimation()
}
})
binding.animation.playAnimation()
}
private fun playSecondAnimation() {
binding.animation.setAnimation(R.raw.progress_2)
binding.animation.repeatCount = 0
binding.animation.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationRepeat(animation: Animator?) = Unit
override fun onAnimationCancel(animation: Animator?) = Unit
override fun onAnimationStart(animation: Animator?) = Unit
override fun …
Run Code Online (Sandbox Code Playgroud) 我正在使用 Glide 将图像加载到我的活动中(在回收器视图中),我想使用加载动画文件作为占位符。
所以这是我的滑行代码:
Glide.with(mContext)
.load(PATH_TO_FILE)
.placeholder(createLottieDrawable("loading_animation.json"))
.into(holder.img_view);
Run Code Online (Sandbox Code Playgroud)
这是createLottieDrawable
我用来从 lottie 文件创建 drawable 的方法:
private LottieDrawable createLottieDrawable(String filename) {
final LottieDrawable lottieDrawable = new LottieDrawable();
LottieComposition.Factory.fromAssetFileName(mContext, filename,
composition -> {
lottieDrawable.setComposition(composition);
lottieDrawable.loop(true);
lottieDrawable.playAnimation();
});
return lottieDrawable;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我看不到任何占位符。
知道为什么吗?
是否可以在启动画面的布局中加载 Lottie 动画?
目前我的启动画面布局是这样的:
背景文件
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item android:drawable="@drawable/path_background_gradient" />
<item
android:drawable="@drawable/ic_locky"
android:gravity="center" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)
样式文件
<!-- Splash Launcher UI theme. -->
<style name="Locky.Theme.Launcher" parent="Locky.Theme">
<item name="android:windowBackground">@drawable/custom_background_launcher</item>
<item name="colorPrimary">@color/background_gradient_accent_start</item>
<item name="colorPrimaryDark">@color/background_gradient_accent_start</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我用它来防止 android 冷启动时出现白屏。
但是ic_locky
我想使用 Lottie 动画而不是图标。有可能这样做吗?因为有许多应用程序在启动画面中使用动画徽标。
请帮我。
谢谢你们。
我一直在努力将这个Kotlin代码翻译成Java,因为该项目是用Java编写的.我正在通过研究Kotlin语法进行翻译.但是,还有一些人我很难理解.
特别:
private val animationView: LottieAnimationView by lazy {
rootView.inflate(R.layout.app_intro_animation_view, false) as LottieAnimationView
}
private val viewPager: LockableViewPager by lazy {
findViewById<LockableViewPager>(R.id.intro_activity_viewPager)
}
override fun generateFinalButtonBehaviour(): IntroButton.Behaviour {
return object : IntroButton.Behaviour {
override fun setActivity(activity: IntroActivity) { finish() }
override fun getActivity(): IntroActivity? = null
override fun run() {}
}
}
private fun setViewPagerScroller() {
try {
val scrollerField = ViewPager::class.java.getDeclaredField("mScroller")
scrollerField.isAccessible = true
val interpolator = ViewPager::class.java.getDeclaredField("sInterpolator")
interpolator.isAccessible = true
val scroller = object : Scroller(this, interpolator.get(null) …
Run Code Online (Sandbox Code Playgroud) 我构建了一个名为“CircleLoader”的自定义组件,它在可见时播放 Lottie 动画。它用作加载动画。在 iOS 上一切正常,但在 Android 上,动画会闪烁。模拟器和真实设备上的屏幕介于黑色和动画本身之间。有没有人遇到过这个问题?根本没有显示任何错误。
这是我的组件代码,如果它有用的话。
import React from 'react';
import { Button, StyleSheet, View } from 'react-native';
import { DangerZone } from 'expo';
import { dimensions, colors } from '../Utils/BaseStyles';
import FadeInView from 'react-native-fade-in-view';
const { Lottie } = DangerZone;
import * as Animatable from 'react-native-animatable'
export default class CircleLoader extends React.Component {
constructor(props) {
super(props);
this.state = {
animation: require('./../../assets/custom_load.json'),
visible: this.props.visible ? this.props.visible : false,
};
};
componentDidMount() {
this._playAnimation();
}
render() {
const circle_loader …
Run Code Online (Sandbox Code Playgroud) reactjs react-native react-native-android lottie-android lottie
lottie-android ×10
android ×8
lottie ×4
kotlin ×2
animation ×1
java ×1
react-native ×1
reactjs ×1
z-order ×1