【问题标题】:Creating animation at runtime in Android在 Android 运行时创建动画
【发布时间】:2015-04-22 12:39:34
【问题描述】:

我可以使用如下的 XML 文件

<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/decelerate_interpolator">

 <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="500" />

</set>

并从代码中加载这个 xml AnimationUtils.loadAnimation(mContext, com.....R.anim.slidein)

一切正常

但现在由于某种原因,我需要在不使用 XML 的情况下做同样的事情 如何仅使用代码创建相同的动画 我试过这样的东西

TranslateAnimation in = new TranslateAnimation(1.0f,0.0f,0.0f,0.0f); in.setInterpolator(AnimationUtils.loadInterpolator(mContext, android.R.anim.accelerate_interpolator)); in.setDuration(500);

但没用,没有动画

我认为问题在于百分比,在 xml 中我指定了百分比,但在 TranslateAnimation 构造函数中我如何指定百分比

【问题讨论】:

  • 向我们展示 XML 文件和更多源代码
  • 什么方法没用?动画不播放?你是如何应用动画来查看的?小提示:在 XML 中使用 DecelerateInterpolator,但在代码中使用 AccelerateInterpolator。
  • 很抱歉我没有发布更多信息,视图根本没有动画,我意识到插值器,但我认为这并不重要,因为它根本没有动画

标签: android


【解决方案1】:

你是对的。您使用的构造函数创建具有绝对值(像素)的动画。您需要使用another constructor。比如这样:

TranslateAnimation in = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 1.0f,
    Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f);

实验第一个和第三个参数。尝试使用 Animation.RELATIVE_TO_PARENT 来满足您的需求。

【讨论】:

    【解决方案2】:

    试试这个(使用百分比“p”):

     <translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500" />
    

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多