9

我有一个 ImageView 元素,我在我的代码中创建并放置在我的 RelativeLayout 中。我将此图像设置为不可见,以使用以下代码开始:

arrow.setVisibility(View.INVISIBLE);

然后我通过 XML 定义了一个 Fade-In Alpha 动画:

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:fillEnabled="true"
android:fillAfter="true"
android:fillBefore="true">

<alpha
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    android:startOffset="100"
    android:duration="300" />

/set>

运行动画:

我只需调用以下命令来启动动画

myview.startAnimation(myanimation);

我看到的问题是我的动画导致 ImageView 在完全可见的情况下闪烁,然后通过 alpha 0 到 1 的动画。我该如何解决这个问题?我无法将初始 alpha 值设置为 0,因为 alpha 动画基于百分比而不是绝对 alpha 值。(例如:0*当前值到 1*当前值)

任何帮助将不胜感激。

4

2 回答 2

1

我认为问题在于,使用这行代码:

android:fillBefore="true"

在这里,试试这个代码,它对我有用:

<?xml version="1.0" encoding="UTF-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:fillAfter="true"
    android:fromAlpha="0.0"
    android:toAlpha="1.0" />
于 2014-03-01T15:53:34.250 回答
0

如果您在布局文件中将 animateLayoutChanges 与动画结合使用,则切换视图可见性将导致两个动画运行并且视图闪烁或闪烁。设置视图可见性会导致布局 animateLayoutChanges 运行并将视图淡入一次,然后您创建的动画也会导致第二个动画运行。

于 2020-08-19T18:12:54.260 回答