如何在Android中为视图的边缘设置动画?

时间:2018-09-20 07:54:48

标签: android animation view

我的UI上有一个ImageView,我想动画其左边缘向右移动:图像本身保持不动,但其左侧部分不可见,显示了下方的视图。 (请考虑CSS中的负边距)。

enter image description here

我该如何实现?

我实际上想要的是这样的前后效果: https://zurb.com/playground/twentytwenty

我的计划是堆叠2个imageViews,当我在顶部对imageView的边缘进行动画处理时,下面的imageView被部分显示。

只要可以得到效果,除了为边缘设置动画之外的其他想法也是可以的。

1 个答案:

答案 0 :(得分:3)

首先,您需要创建调整大小的动画,以使视图大小像这样

请注意,这是Kotlin代码,如果需要宽度,则需要更改,否则需要更改

 class ResizeAnimation(var view: View, val targetHight: Int) : Animation() {
    val startWidth: Int = view.height

     override fun applyTransformation(interpolatedTime: Float, t: Transformation) {
        val newHight = (startWidth + (targetHight - startWidth) * interpolatedTime).toInt()
        view.layoutParams.height = newHight
        view.requestLayout()
    }


    override fun willChangeBounds(): Boolean {
        return true
    }
}

接下来在您的活动中将其称为其他动画示例

val anime = ResizeAnimation(view, commentViewHight)
            anime.duration = 250
            anime.fillAfter =true
            view.startAnimation(anime)

因为您要处理图片视图,就像上面的示例一样,将图片的比例类型更改为“适合末端”

请注意,您不能在oncreate()中使用此代码,您需要确保该视图首先可见以计算高度/宽度