我有一个Lottie动画文件,但是当我将它放入视图中时,由于文件内部填充的原因,它变得太小了。因此,我已经在xml中使用了lottie_scale属性,并且根据一些资源,如这个,也使用了LottieComposition,但都没有成功。
是否有任何解决方案?
我有一个Lottie动画文件,但是当我将它放入视图中时,由于文件内部填充的原因,它变得太小了。因此,我已经在xml中使用了lottie_scale属性,并且根据一些资源,如这个,也使用了LottieComposition,但都没有成功。
是否有任何解决方案?
我认为现在有两个“半”解决方案:
XML:
android:scaleX="5"
android:scaleY="5"
以编程方式:
view.setScaleX(5f);
view.setScaleY(5f);
Flutter
使用OverflowBox
小部件进行尝试
SizedBox(
height: 120,
child: OverflowBox(
minHeight: 170,
maxHeight: 170,
child: Lottie.asset('assets/json/box.json'),
),
),
编辑:
由于我之前提供的解决方案并不适用于所有遇到这个问题的人,所以我决定修改我的答案,采用更普遍(经过尝试和测试)的方法来解决它,即使用缩放:
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/my_animation"
android:layout_width="100dp"
android:layout_height="100dp"
android:scaleX="5"
android:scaleY="5"
app:lottie_fileName="animation.json"
app:lottie_autoPlay="false"/>
这里关键是android:scaleX="5"
。
我最近遇到了同样的问题,使用负填充增加了视图内动画项的大小。
<com.airbnb.lottie.LottieAnimationView
android:id="@+id/my_animation"
android:layout_width="100dp"
android:layout_height="100dp"
android:padding="-10dp"
app:lottie_fileName="animation.json"
app:lottie_autoPlay="false"/>
增加或减少填充值以获得所需的动画大小。
LottieAnimation(
composition = composition,
iterations = LottieConstants.IterateForever,
modifier = Modifier
.requiredHeight(30.dp)
.requiredWidth(30.dp).scale(2f,2f),
)
对于React Native,应用resizeMode: "center"
对我来说解决了这个问题。
<Lottie
source={require('../../../assets/lottie/set-lock.json')}
autoPlay
loop
autoSize
resizeMode='center' // this fixes lottie padding
style={{width: 258}}
/>
我曾经遇到同样的问题,但是找不到一个好的答案。为了让它正常工作,我使用了负边距。虽然不太美观,但可以作为一个快速解决方案。
<LottieView
style={styles.checkAnimation}
source={require('<path to json>')}
autoPlay
loop={false}
speed={2}
autoSize
resizeMode="cover"
/>
const styles = {
checkAnimation: {
position: 'absolute',
width: '150%',
height: '115%',
marginLeft: '-17%',
marginTop: '-7%',
},
}