java delta,java-如何以编程方式更改Animation实例的“ x-delta”?

假设我们想要一个可以水平“摇动”视图的动画.

我们做这样的事情:

private void shakeView(final View v) {

v.clearAnimation();

Animation animShake = AnimationUtils.loadAnimation(this, R.anim.shake);

v.startAnimation(animShake);

}

xml:

android:duration="60"

android:fromXDelta="-20"

android:toXDelta="20"

android:repeatCount="14"

android:repeatMode="reverse"

android:interpolator="@android:anim/linear_interpolator" />

但是,由于我们一丝不苟,因此我们意识到xml中定义的“抖动距离”是以dp /像素为单位解释的静态距离,因此在不同的设备(高分辨率设备,运动将是微妙的……就像电动牙刷一样,但是在低分辨率的设备上,运动将非常激烈,就像二手车上那些挥舞着的爆破娃娃之一一样.

将“ x-delta”表示为视图宽度的比例会更好:

float ratio = 14f/392f;

float valueOfXTranslation = ratio*v.getWidth();

但是……为了做到这一点,我们必须能够在代码中设置“ x-delta”……我看不到这样做的方法.

我尝试输入“ animShake”. -“点”-并查看可用的选项…尽管有一些设置器,但是似乎没有一个设置“ x-delta”.我想我应该放弃并尝试使用其他动画技术完全不同的方法,但是我简直不敢相信这是不可能的.

是否可以通过编程方式更改Animation实例的“ x-delta”?

解决方法:

您可以在xml中使用可选的%p来控制相对于父级大小的移动量.喜欢:

android:fromXDelta="-5%p"

android:toXDelta="5%p"

标签:shake,animation,xml,java,android

来源: https://codeday.me/bug/20191108/2009547.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值