隐藏ProgressBar时动画不再有效

时间:2011-05-23 20:44:06

标签: android animation progress-bar

长时间听众,第一次来电...

我正在创建一个从名为SplashBase的Activity派生的启动画面,它放在一个共享项目中。布局如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/linlytSplash"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
>
   <ImageView
      android:id="@+id/imgvwSplash"
      android:src="@drawable/splashscreen"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
   ></ImageView>

   <LinearLayout
      android:id="@+id/linlytProgress"
      android:orientation="horizontal"
      android:layout_width="wrap_content"
      android:layout_height="fill_parent"
      android:layout_gravity="center"
      android:gravity="center"
   >
      <ProgressBar
         android:id="@+id/progbarProgress"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginRight="5dp"
      ></ProgressBar>
      <TextView
         android:id="@+id/txtvwProgress"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginLeft="10dip"
         android:gravity="center_vertical"
         android:text="@string/loading_ellipsis"
         android:textStyle="bold"
      ></TextView>

   </LinearLayout>

</LinearLayout>

我正在加载像这样的动画:

  Animation animation = AnimationUtils.loadAnimation(this, R.anim.splashscreen_anim);
  animation.setAnimationListener(new AnimationListener() {
     public void onAnimationEnd(Animation animation) {
        // Advance to the next screen.
        if (null != m_intentToLaunch) {
           startActivity(m_intentToLaunch);
        }

        finish();
     }
  });

  animation.setStartTime(AnimationUtils.currentAnimationTimeMillis() + 1000);

我有一个名为Splash的派生类,它存在于我的主项目中。

我已经有了这个启动画面很长一段时间了,动画一直都有效。我的ImageView显示2秒钟,然后在调用finish()并加载下一个Activity之前动画并消失。

我现在正在添加一个仅在第一秒显示的ProgressBar(不完全是,但如果我这样解释它会更清楚)。出于某种原因,在我隐藏ProgressBar之后,动画不再适用于ImageView。当我打电话

findViewById(R.id.linlytProgress).setVisibility(View.INVISIBLE);

动画不再有效。为了测试我已拨打以下电话:

findViewById(R.id.txtvwProgress).setVisibility(View.INVISIBLE);

然后

findViewById(R.id.progbarProgress).setVisibility(View.INVISIBLE);

当我只隐藏TextView时,事情按预期工作。当我隐藏ProgressBar,繁荣时,我的ImageView不再动画。我很茫然。

2 个答案:

答案 0 :(得分:1)

对我来说听起来像个错误。创建一个重现错误的示例项目,并在http://b.android.com上提交该示例项目的错误。请务必提及您所看到的错误(特定硬件或仿真器版本)。如果您这么想,请在此答案中添加评论,并附上错误报告的链接。

答案 1 :(得分:0)

我终于找到了自己问题的答案。视图需要无效。

findViewById(R.id.imgvwSplash).invalidate();
瞧,瞧!它完全按照预期工作,到目前为止我在每个平台上都试过它。

感谢所有看过这个问题的人。

-I_Artist