我创建了一个简单的动画来使视图反复上下移动:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromYDelta="0"
android:toYDelta="???"
android:duration="1000"
android:repeatCount="1000000"
android:repeatMode="reverse"/>
</set>
我正在为此使用动画资源,就像在文档中建议的那样。但是,在编译时,我不知道视图应该走多远(toYDelta
),因为它取决于设备屏幕。
是否有某种方法可以对参数进行参数化?如果没有,那将是什么方法呢?
答案 0 :(得分:1)
您可以通过编程方式实现与Kotlin中相同的动画:
val bounceAnimation = TranslateAnimation(0f, 0f, fromYDelta, toYDelta).apply {
duration = 1000
repeatCount = 1000000
repeatMode = Animation.REVERSE
interpolator = AccelerateDecelerateInterpolator()
}
view.startAnimation(bounceAnimation)
答案 1 :(得分:1)
您可以将这些值表示为百分比,例如。 :“ 20%p”是父级的20%
查看更多信息 https://developer.android.com/guide/topics/resources/animation-resource
答案 2 :(得分:1)
文档显示here:
垂直和/或水平运动。支持以下三种格式之一的以下属性:-100到100的值以“%”结尾,表示相对于自身的百分比;值从-100到100,以“%p”结尾,表示相对于其父级的百分比;不带后缀的浮点值,表示绝对值。表示TranslateAnimation。
%p
将帮助您完成所需的工作。