水平ProgressBar:在确定和不确定之间切换
我试图切换这两种模式之间的SeekBar
来显示流媒体的状态。
我已经确定在XML中定义android:indeterminate
标记时显示正确的图形:
<SeekBar
android:id="@+id/seekBar1"
android:indeterminate="false"
android:progressDrawable="@android:drawable/progress_horizontal"
android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
android:indeterminateBehavior="cycle"
android:indeterminateOnly="false"
android:progress="33"
android:secondaryProgress="66"
android:layout_height="wrap_content"
android:layout_width="match_parent"></SeekBar>
麻烦的是,当试图通过调用setIndeterminate(true)
来切换时,drawable看起来没有正确更改。 在不确定→确定的情况下,动画停止,并且从确定 - >不确定,没有任何反应。
我究竟做错了什么?
SeekBar onSizeChanged()仅初始化当前选定的可绘制背景,并且在SeekBar初始化时调用它。 所以修正可能是:
public class CorrectedSeekBar extends SeekBar {
public CorrectedSeekBar(Context context) {
super(context);
}
public CorrectedSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CorrectedSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
boolean current = isIndeterminate();
setIndeterminate(!current);
super.onSizeChanged(w, h, oldw, oldh);
setIndeterminate(current);
super.onSizeChanged(w, h, oldw, oldh);
}
}
并在布局xml中使用<yourpackage.CorrectedSeekBar ...
这看起来不错,其他解决方法可能是可能的,但我认为这是主要问题(错误?)。
我遇到了同样的问题,我通过调用postInvalidate()来强制刷新视图来解决它。 我在Android 2.3.4上。
// Configure the SeekBar
seekBar.setIndeterminate(true);
seekBar.postInvalidate();
相反,将pd设置为不确定只是切换其背景。 如果你想绘制动画,那么我建议在这里查看TransitionDrawable:TransitionDrawable。 所以它的使用是实际添加两个不同的drawable并为其转换创建动画。 我认为这应该适合你的情况。 但我没有经验,在进度对话框上做这样的事情,所以我真的不知道。
链接地址: http://www.djcxy.com/p/8317.html上一篇: Horizontal ProgressBar: Toggling between determinate and indeterminate