【问题标题】:Animating Button in AndroidAndroid中的动画按钮
【发布时间】:2014-03-09 20:16:00
【问题描述】:

我是 android 动画的新手,所以请不要将我标记为负面。我正在尝试使用翻译动画为按钮的位置设置动画。

我想做的事:

当用户单击按钮时,按钮应首先向显示屏的最右侧移动,使其不再可见。然后它应该会从显示屏左侧回到原来的位置。

实际发生了什么(问题):

当用户点击按钮时,按钮先从显示屏左侧出现,然后向显示屏右侧加速。

animation.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" >

    <translate
        android:duration="200"
        android:fromXDelta="0%p"
        android:fillAfter="true"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toXDelta="100%p" />
    <translate
        android:fromXDelta="-100%p"
        android:duration="200"
        android:fillAfter="true"
        android:interpolator="@android:anim/decelerate_interpolator"
        android:startOffset="200"
        android:toXDelta="0%p" />

</set>

【问题讨论】:

  • 在第一次翻译中删除p in android:fromXDelta="0%p",在第二次删除pandroid:toXDelta="0%p"p 表示从父位置计算偏移量,没有它会从这个视图位置计算偏移量。
  • 抱歉,没有用。

标签: android animation translate-animation


【解决方案1】:

老兄试试这个代码,它认为它会解决你的问题:

<translate
    android:duration="200"
    android:fromXDelta="0%p"
    android:fillAfter="true"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toXDelta="100%p" />
<translate

    android:fromXDelta="100%p"
    android:duration="1"
    android:fillAfter="true"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:startOffset="200"
    android:toXDelta="-100%p" />
<translate

    android:fromXDelta="-100%p"
    android:duration="200"
    android:fillAfter="true"
    android:interpolator="@android:anim/decelerate_interpolator"
    android:startOffset="210"
    android:toXDelta="0%p" />

请记住,第一次翻译会将您的按钮移到右边,这意味着当前按钮位置基于您的动画集位于那里 (100%p),因此您需要找到一种方法将其快速设置为您希望它下一个开始的位置,因此我在中间添加了翻译。

希望对你有帮助

【讨论】:

  • 谢谢哥们,成功了。但我还是不明白。为什么我的代码不起作用?我认为翻译块将依次执行。但实际上并非如此。
  • 我想我在回答中也解释了 myslef %p 你从父位置计算翻译。在这里查看有关动画developer.android.com/reference/android/animation/…的更多解释,如果对您有帮助,请不要忘记选择我的答案
  • 我知道 %p 会计算与父母位置的偏移量。第一个平移块应将按钮位置设置为最右侧 (100%p),第二个平移块应立即将其位置设置为最左侧 (-100%p),然后将其移至右侧 (0%p)。
  • 既然你很清楚自己在做什么,为什么不工作?
  • 请不要介意我只是一个初学者。你能解释一下我做错了什么为什么第二个翻译块首先执行,我什至不知道它是否先执行,我这么说是因为按钮首先从左边移动到原始位置而不是从原始位置移动到极右。
猜你喜欢
  • 2013-02-04
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 2017-03-09
  • 2015-01-27
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多