2015-05-27 99 views
1

如何創建動畫不確定的進度條並且具有圓角? 由於某些原因,如果您將自己的動畫列表用作動畫,則無法定義該形狀。它總是鋒利,鋒利,不圓。帶動畫和圓角的不確定進度條

這就是我需要:

enter image description here

回答

1

一個解決辦法是設置不確定繪製的代碼。

// 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。

+0

我目前還不能看到這個對子級具有圓形角。或者如果drawable具有圓角,比如何用平滑的方式平鋪。 –

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