我正在尝试为我的游戏级别选择菜单创建某种画廊视图。水平放置三个项目,左右两个按钮。当我按下右键时,这三个项目都应该向左移动,当有左键单击时 - 项目向右移动。我发现使用转换动画android:fillAfter
属性时出现问题:如果它是true
并且我第一次单击按钮,则项目会移动到必要的位置并按预期保留在那里。但是在第二次点击时,它们从初始位置开始移动,意味着它们的实际坐标在第一次转换后不会改变。我错过了什么吗?我怎样才能实现这一目标?
答案 0 :(得分:0)
android:fillAfter
不会更改视图的属性。它只是意味着它们在动画完成后就地绘制,但它们的物理属性是相同的。您的翻译动画可能是相对于它们物理位置的动画。另请注意,视图实际上并不在您移动它们的位置,这意味着如果用户触摸它们,则触摸不会注册。如果用户触摸过去的位置,他们会注册。
在这种情况下,您需要做的是将它们从当前查看的位置设置为您想要的位置。
可能的解决方案:
从左到右:
TranslateAnimation (Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0);
从右到左:
TranslateAnimation (Animation.RELATIVE_TO_PARENT, 1.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0, Animation.RELATIVE_TO_PARENT, 0.0);
在这种情况下,相对于父母,我从左到右动画从0%到100%。启用fillAfter
后,视图将(明显)保持不变。在那之后,我从右到左动画相对于父母的100%到0%。