ProgressBar在动画后没有正确更新

时间:2011-04-12 14:05:11

标签: android android-layout

我有一个带有ProgressBar的布局(实际上它是一个SeekBar但是ProgressBar会出现同样的问题)。它工作正常,直到我开始动画整个布局,将其翻译下来。在动画期间,ProgressBar继续按预期工作,但是当动画完成时(我使用Animation.setFillAfter(true)将布局冻结在动画的最终位置),ProgressBar会正确停止更新,而只是一小行条形图顶部保持更新,而progressBar的底部部分保持冻结状态(水平progressBar)。

一些代码: 带有ProgressBar的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/video_buttons"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom|left">   
<SeekBar
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/progressbar_Horizontal"
    style="?android:attr/progressBarStyleHorizontal"
    android:max="100"
/>

这是我定义动画的地方:

Animation a = AnimationUtils.loadAnimation(this, R.anim.translate_down);
a.setFillAfter(true);

这是我在整个布局上开始动画的地方:

View vv = p.findViewById(R.id.video_buttons);
vv.startAnimation(anim);

1 个答案:

答案 0 :(得分:0)

我的第一个想法是你可能无意中使用了“android:secondaryProgress”属性。

除此之外,如果您在单独的主题中运行此功能,请确保使用以下内容:

activity.runOnUiThread(new Runnable() //
            {
                public void run() //
                {
                    int newProgressVal = Integer
                            .parseInt((String) syncProgressNumber.getText()) + 1;
                    syncProgress.incrementProgressBy(1);
                    syncProgressNumber.setText(String
                            .valueOf(newProgressVal));
                }
            });

UI线程不是线程安全的,因此您无法从其他线程更新UI。

希望这有帮助!