我有以下动画资源:
<?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的更新,但我没有更新,所以我可以将它用作测试设备。
答案 0 :(得分:0)
我在共享内插器时遇到了问题。尝试为每个动画设置插补器,而不是使用android:shareInterpolator
。
答案 1 :(得分:0)
使用浮动的Alpha动画仅在API级别11中引入。但是,自API级别1起,setAlpha(int)动画已存在。我不确定这是否适用于XML,就像它对内置方法一样,但你可以尝试使用整数值“1”和“0”而不是浮点数。
答案 2 :(得分: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之前工作
希望它可以用于你需要使用它的任何东西。