如何创建一个动画的不确定进度条,并且有圆角? 出于某种原因,如果您使用自己的动画列表作为动画,则无法定义形状。它总是锋利,前卫,而不是圆润。
这就是我需要的:
答案 0 :(得分:1)
一种解决方案是使用代码设置不确定的drawable。
// ProgressBar when parsing indeterminate drawable from XML sets rounded corners. progressBar.setIndeterminateDrawable(context.getResources().getDrawable(R.drawable.progressbar));
然后使用进度条
<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/progress_2b" android:duration="100" />
<item android:drawable="@drawable/progress_1b" android:duration="100" />
</animation-list>
从上面的android:drawable
可以看出,有2张图片。 progress_1b和progress_2b。
它们看起来像这样。
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/progress_1"
android:tileMode="repeat" >
</bitmap>`
为moi工作。
答案 1 :(得分:0)
最后我遵循了编码方法。基本上为每个帧生成平铺和剪裁的drawable。我相信原始的进度条做了类似的事情。
(为简洁起见,省略了一些部分)
final ShapeDrawable shape = new ShapeDrawable(new RoundRectShape(6 /*px*/, null, null));
final AnimationDrawable background = (AnimationDrawable) getResources().getDrawable(R.drawable.progress_bar_indeterminate_animation_list);
final int N = background.getNumberOfFrames();
AnimationDrawable newBg = new AnimationDrawable();
newBg.setOneShot(background.isOneShot());
for (int i = 0; i < N; i++) {
final Bitmap tileBitmap = ((BitmapDrawable) background.getFrame(i)).getBitmap();
final BitmapShader bitmapShader = new BitmapShader(tileBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
shape.getPaint().setShader(bitmapShader);
final Drawable result = new ClipDrawable(shape, Gravity.LEFT, ClipDrawable.HORIZONTAL);
result.setLevel(10000);
newBg.addFrame(result, background.getDuration(i));
}
newBg.setLevel(10000);
progressBar.setIndeterminateDrawable(newBg);
progress_bar_indeterminate_animation_list
是:
<animation-list android:oneshot="false">
<item android:drawable="@drawable/install_progressbar_indeterminate1" android:duration="200" />
<item android:drawable="@drawable/install_progressbar_indeterminate2" android:duration="200" />
<item android:drawable="@drawable/install_progressbar_indeterminate3" android:duration="200" />
</animation-list>
整个代码在这里:http://mikinw.blogspot.co.uk/2015/05/indeterminate-progressbar-with-rounded.html