📜  在Android中使用Shimmer进行内容占位符动画(1)

📅  最后修改于: 2023-12-03 14:51:14.356000             🧑  作者: Mango

在Android中使用Shimmer进行内容占位符动画

简介

Shimmer是一个轻量级的库,可用于在Android应用中添加动态内容占位符动画。它可以使您的应用程序看起来更加生动和现代化。

安装

要使用Shimmer,请将以下依赖项添加到您的项目中的build.gradle文件中:

dependencies {
    implementation 'com.facebook.shimmer:shimmer:0.5.0'
}
使用方法

使用Shimmer非常简单。首先,将ShimmerFrameLayout添加到XML布局中,如下所示:

<com.facebook.shimmer.ShimmerFrameLayout
    android:id="@+id/shimmer_view_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:shimmer_animation_duration="1000"
    app:shimmer_auto_start="true"
    app:shimmer_direction="left_to_right"
    app:shimmer_repeat_count="infinite">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</com.facebook.shimmer.ShimmerFrameLayout>

如果您想要使用自定义布局而不是默认布局,请添加以下属性:

app:shimmer_view="@layout/custom_layout"

接下来,您需要在您的Java或Kotlin代码中找到ShimmerFrameLayout的引用并开始或停止动画。以下代码展示了如何在Java中启动动画:

ShimmerFrameLayout shimmerViewContainer = findViewById(R.id.shimmer_view_container);
shimmerViewContainer.startShimmerAnimation();

以下代码展示了如何在Kotlin中停止动画:

val shimmerViewContainer = findViewById<ShimmerFrameLayout>(R.id.shimmer_view_container)
shimmerViewContainer.stopShimmerAnimation()
自定义Shimmer效果

Shimmer支持许多自定义属性。以下是可用属性的详细列表:

| 属性 | 描述 | |------------------------------|----------------------------------| | shimmer_animation_duration | 动画的持续时间(以毫秒为单位)。 | | shimmer_auto_start | 是否在布局加载后自动开始动画。 | | shimmer_direction | 动画的方向(left_to_rightright_to_left)。 | | shimmer_repeat_count | 动画循环的次数。如果设置为infinite,则将持续循环。 | | shimmer_repeat_delay | 循环之间的延迟时间(以毫秒为单位)。 | | shimmer_shape | 动画的形状(linearradialheartsquarecircle)。 | | shimmer_dropoff | 阴影淡出的速度。取值范围为0到1. | | shimmer_intensity | 阴影强度。取值范围为0到1。 | | shimmer_base_alpha | 基本透明度。取值范围为0到1. | | shimmer_highlight_alpha | 强调透明度。取值范围为0到1. |

您可以使用这些属性来创建您自己的自定义Shimmer效果。例如,以下代码展示了如何将动画方向更改为从右到左:

<com.facebook.shimmer.ShimmerFrameLayout
    android:id="@+id/shimmer_view_container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:shimmer_animation_duration="1000"
    app:shimmer_auto_start="true"
    app:shimmer_direction="right_to_left"
    app:shimmer_repeat_count="infinite">

    <TextView
        android:id="@+id/text_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

</com.facebook.shimmer.ShimmerFrameLayout>
结论

使用Shimmer可以为您的应用程序添加现代而生动的内容占位符动画。它易于使用,并且支持自定义属性,因此您可以创建自己的自定义Shimmer效果。