长时间听众,第一次来电...
我正在创建一个从名为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不再动画。我很茫然。
答案 0 :(得分:1)
对我来说听起来像个错误。创建一个重现错误的示例项目,并在http://b.android.com上提交该示例项目的错误。请务必提及您所看到的错误(特定硬件或仿真器版本)。如果您这么想,请在此答案中添加评论,并附上错误报告的链接。
答案 1 :(得分:0)
我终于找到了自己问题的答案。视图需要无效。
findViewById(R.id.imgvwSplash).invalidate();
瞧,瞧!它完全按照预期工作,到目前为止我在每个平台上都试过它。
感谢所有看过这个问题的人。
-I_Artist