动画显示14+ Android

时间:2015-02-04 12:20:57

标签: android xml animation canvas drawable

我正在处理一个覆盖drawable的任务,该视图会动画一个复选标记的绘制,如下面的视频https://vid.me/MsQj

我没有这样做的首选方法,但它只是没有按照我想要的方式出现,我试过了:

  • 两个视图,每个视图都在复选标记的旁边,用动画显示,但是我被卡在“动画显示”中,因为我不能使用-21的圆形显示
  • 逐帧动画,这是最简单的,但如果可以通过编程方式完成,我讨厌为这个愚蠢的动画制作60张图像
  • 在自定义视图画布上绘图

我的问题是,有什么东西可以让我更轻松,或者我必须首先处理它并继续使用它

2 个答案:

答案 0 :(得分:2)

您可以创建一个自定义View类,其中包含由ShapeDrawables定义的两条线,每条线对应一条线。将这两行的长度公开为类的属性,然后使用Property Animation为行的长度设置动画。
属性动画足够灵活,可以处理各种属性的相当复杂的时序和排序。在这种特殊情况下,您可能希望使用AnimatorSet对两行动画进行排序,以便在第一行完成后第二行开始。

答案 1 :(得分:2)

由于@SoundConception建议,我最终开发了一个自定义View,并找到ObjectAnimator中非常强大的Android。本质上是我们设置第一行和第二行的宽度来制作复选标记,并使用动画师将这些属性的值从0更改为所需的值。

在属性的setter上,我们使View无效以使用新值重新绘制它并稍加调整我做了一个很好的View,虽然它目前只适用于我的特定布局(即它需要一些更多关于偏移计算的工作)它能够绘制一个动画的复选标记,其中包含一些可自定义的内容。

准确地说,您可以设置线宽,颜色,长度和动画时间。触摸java文件,您可以更改插补器和所有其他内容。

希望代码虽然没有真正评论,但却可以作为尝试类似内容的人的基础。

例如,下面的代码会产生类似this video的内容,虽然不是因为我正在测试不透明度和更细的线条,但是你得到了我的漂移。

<coop.devtopia.CheckmarkView
    android:layout_width="250dp"
    android:layout_height="250dp"
    android:layout_centerInParent="true"
    android:id="@+id/view"

    app:first_leg_length="50"
    app:second_leg_length="100"
    app:total_duration="1500"
    app:stroke_width="20"
    app:stroke_color="#22000000"/>

<强> Repository

更新4/2/15

我已经进一步玩了这一点,并添加了动态偏移计算(说中心化的方式)到 tick ,这意味着我们可以生成大的复选标记,小的选中标记,粗细或粗,反转或直线,它们将在视图中居中。对于大于容器的复选标记,不能保证相同,它们很可能会被裁剪。

以下是为此演示生成的一些复选标记,当然,动画就像绘制一样,效果可以非常令人愉悦且资源友好。毕竟,这毕竟是一个非常有趣的主题。

enter image description here