├── pb_empty.png ├── pb_full.png ├── .gitignore ├── pb_screenshot.png ├── res ├── drawable │ ├── pb_empty.png │ ├── pb_full.png │ └── progress_bar.xml ├── values │ ├── strings.xml │ └── styles.xml └── layout │ └── main.xml ├── README.md ├── AndroidManifest.xml ├── src └── main │ └── java │ └── net │ └── grzechocinski │ └── android │ └── examples │ ├── clipdrawable │ ├── VerticalProgressBar.java │ └── ProgressBarExampleActivity.java │ └── domain │ └── Percent.java └── pom.xml /pb_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgrzechocinski/AndroidClipDrawableExample/HEAD/pb_empty.png -------------------------------------------------------------------------------- /pb_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgrzechocinski/AndroidClipDrawableExample/HEAD/pb_full.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | bin/ 3 | target/ 4 | gen/ 5 | local.properties 6 | default.properties 7 | *.iml 8 | -------------------------------------------------------------------------------- /pb_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgrzechocinski/AndroidClipDrawableExample/HEAD/pb_screenshot.png -------------------------------------------------------------------------------- /res/drawable/pb_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgrzechocinski/AndroidClipDrawableExample/HEAD/res/drawable/pb_empty.png -------------------------------------------------------------------------------- /res/drawable/pb_full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mgrzechocinski/AndroidClipDrawableExample/HEAD/res/drawable/pb_full.png -------------------------------------------------------------------------------- /res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | AndroidClipDrawableExample 4 | 5 | -------------------------------------------------------------------------------- /res/drawable/progress_bar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | AndroidClipDrawableExample 2 | ========================== 3 | 4 | Example of pretty simple implementation of progress bars in Android based on ClipDrawable 5 | 6 | ```xml 7 | 8 | 9 | 10 | 11 | 12 | 16 | 17 | 18 | ``` 19 | 20 | ![Screenshot][1] 21 | 22 | [1]: https://raw.github.com/mgrzechocinski/AndroidClipDrawableExample/master/pb_screenshot.png 23 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/main/java/net/grzechocinski/android/examples/clipdrawable/VerticalProgressBar.java: -------------------------------------------------------------------------------- 1 | package net.grzechocinski.android.examples.clipdrawable; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.widget.ImageView; 6 | import java.math.BigDecimal; 7 | import net.grzechocinski.android.examples.domain.Percent; 8 | 9 | public class VerticalProgressBar extends ImageView { 10 | 11 | /** 12 | * @see ClipDrawable 13 | */ 14 | private static final BigDecimal MAX = BigDecimal.valueOf(10000); 15 | 16 | public VerticalProgressBar(Context context, AttributeSet attributeSet) { 17 | super(context, attributeSet); 18 | setImageResource(R.drawable.progress_bar); 19 | } 20 | 21 | public void setCurrentValue(Percent percent){ 22 | int cliDrawableImageLevel = percent.asBigDecimal().multiply(MAX).intValue(); 23 | setImageLevel(cliDrawableImageLevel); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/net/grzechocinski/android/examples/domain/Percent.java: -------------------------------------------------------------------------------- 1 | package net.grzechocinski.android.examples.domain; 2 | 3 | import java.math.BigDecimal; 4 | 5 | public class Percent { 6 | 7 | public static final Percent PERCENT_0 = new Percent(0); 8 | public static final Percent PERCENT_25 = new Percent(25); 9 | public static final Percent PERCENT_50 = new Percent(50); 10 | public static final Percent PERCENT_75 = new Percent(75); 11 | public static final Percent PERCENT_100 = new Percent(100); 12 | 13 | public static final BigDecimal DIVISOR_PERCENT = new BigDecimal(100); 14 | 15 | private final int value; 16 | 17 | public Percent(int value) { 18 | if(value < 0 || value > 100){ 19 | throw new IllegalArgumentException("Percentage value must be in <0;100> range"); 20 | } 21 | this.value = value; 22 | } 23 | 24 | public int asIntValue() { 25 | return value; 26 | } 27 | 28 | public BigDecimal asBigDecimal() { 29 | return new BigDecimal(value).divide(DIVISOR_PERCENT); 30 | } 31 | 32 | @Override 33 | public String toString() { 34 | final StringBuilder sb = new StringBuilder("Percent{"); 35 | sb.append("value=").append(value); 36 | sb.append('}'); 37 | return sb.toString(); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /res/layout/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 14 | 17 | 18 | 21 | 22 |