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

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

概述假设我们想要一个可以水平“摇动”视图的动画.我们做这样的事情:Java:privatevoidshakeView(finalViewv){v.clearAnimation();AnimationanimShake=AnimationUtils.loadAnimation(this,R.anim.shake);v.startAnimation(animShake);}xm

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

我们做这样的事情:

Java:

private voID shakeVIEw(final VIEw v) {        v.clearanimation();        Animation animshake = AnimationUtils.loadAnimation(this, R.anim.shake);        v.startAnimation(animshake); }

xml:

<set xmlns:androID="http://schemas.androID.com/apk/res/androID">    <translate        androID:duration="60"        androID:fromXDelta="-20"        androID:toXDelta="20"        androID:repeatCount="14"        androID:repeatMode="reverse"        androID:interpolator="@androID:anim/linear_interpolator" /></set>

但是,由于我们一丝不苟,因此我们意识到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"
总结

以上是内存溢出为你收集整理的java-如何以编程方式更改Animation实例的“ x-delta”?全部内容,希望文章能够帮你解决java-如何以编程方式更改Animation实例的“ x-delta”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1081357.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存