1

我有以下动画资源:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/linear_interpolator"
    android:shareInterpolator="true">
    <translate
        android:duration="@integer/animation_time"
        android:fromXDelta="0%" 
        android:toXDelta="0%" 
        android:fromYDelta="0"
        android:toYDelta="10%"  />
    <alpha
        android:duration="@integer/animation_time"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />
</set>

我在对话框上设置了这个动画,所以当对话框被关闭时,它会稍微向下移动并淡出。这适用于 Android 3.0+,但在 3.0 之前的设备上,动画的 alpha 部分没有任何作用。如果我将持续时间设置为更长的时间,对话框不会立即消失,所以看起来它正在运行,对话框并没有消失。如果我注释掉翻译,或者将翻译上的 toYDelta 值设置为 0(这样就没有任何翻译),那么 alpha 在 2.3.4 上工作,只是当对话框移动时它不会消失。

知道这是为什么吗?我在 HTC Evo 3d 上遇到了这个问题,它确实有可用于 4.0 的更新,但我还没有更新,所以我可以将它用作测试设备。

4

3 回答 3

0

我在共享插值器时遇到了问题。尝试为每个动画设置一个插值器,而不是使用android:shareInterpolator.

于 2013-04-18T05:33:04.203 回答
0

使用浮点数的 Alpha 动画仅在 API 级别 11 中引入。 setAlpha(int) 动画从 API 级别 1 开始就存在。我不确定这是否会像对内置方法一样适用于 XML,但您可以尝试使用整数值“1”和“0”而不是浮点数。

于 2013-07-28T12:23:21.347 回答
0

您可以执行一个动画,它只会将 alpha 设置为特定的浮点值。我怀疑这有点耗费资源,因为每次设置 alpha 时都必须使用动画。

public void setLayoutAlpha(float alpha, View v){
    AlphaAnimation alphaAnim = new AlphaAnimation(alpha, alpha);
    alphaAnim.setFillAfter(true);
    alphaAnim.setFillEnabled(true);
    v.startAnimation(alphaAnim);
}

可以这样称呼。

setLayoutAlpha(1f,viewToChangeAlpha);

这就是我用来创建 swipeToDismiss 布局的方法,该布局具有在 3.0 之前工作的淡入淡出视图

希望它适用于您需要使用它的任何用途。

于 2014-01-14T20:46:45.253 回答