假设我们想要一个可以水平“摇动”视图的动画.
我们做这样的事情:
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”?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)