Recientemente me encontré con la necesidad de una barra de progreso vertical, pero no pude encontrar una solución utilizando el widget existente Barra de progreso. Las soluciones que encontré generalmente requieren una extensión de la barra de progreso actual o una clase completamente nueva en sí misma. No estaba convencido de implementar una nueva clase para lograr un cambio de orientación simple.
Este artículo presenta una solución simple, elegante y lo más importante, una solución sin cortes para lograr una barra de progreso vertical. Voy a omitir la explicación y simplemente proporcionar una solución de cortador de galletas. Si necesita más información, no dude en ponerse en contacto conmigo o dejar un comentario a continuación.
Cree un xml en su carpeta dibujable (no drawable-hdpi o drawable-mdpi - colóquelo en drawable). Para este ejemplo llamo a mi xml vertical_progress_bar.xml
Esto es lo que coloque en el archivo xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="180"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip android:clipOrientation="vertical" android:gravity="bottom">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#80ffd300"
android:centerColor="#80ffb600"
android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="180"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip android:clipOrientation="vertical" android:gravity="bottom">
<shape>
<corners android:radius="5dip" />
<gradient
android:startColor="#ffffd300"
android:centerColor="#ffffb600"
android:centerY="0.75"
android:endColor="#ffffcb00"
android:angle="180"
/>
</shape>
</clip>
</item>
</layer-list>
crear un archivo XML denominado styles.xml y colocarlo en res/valores. Si su proyecto ya contiene styles.xml en res/values, omita este paso.
modificar su archivo styles.xml y añadir el siguiente código al final del archivo:
<style name="Widget">
</style>
<style name="Widget.ProgressBar">
<item name="android:indeterminateOnly">true</item>
<item name="android:indeterminateBehavior">repeat</item>
<item name="android:indeterminateDuration">3500</item>
<item name="android:minWidth">48dip</item>
<item name="android:maxWidth">48dip</item>
<item name="android:minHeight">48dip</item>
<item name="android:maxHeight">48dip</item>
</style>
<style name="Widget.ProgressBar.Vertical">
<item name="android:indeterminateOnly">false</item>
<item name="android:progressDrawable">@drawable/progress_bar_vertical</item>
<item name="android:indeterminateDrawable">@android:drawable/progress_indeterminate_horizontal</item>
<item name="android:minWidth">1dip</item>
<item name="android:maxWidth">12dip</item>
</style>
Añadir su nueva barra de progreso vertical para su diseño. He aquí un ejemplo:
<ProgressBar
android:id="@+id/vertical_progressbar"
android:layout_width="12dip"
android:layout_height="300dip"
style="@style/Widget.ProgressBar.Vertical"
/>
Eso debería ser todo lo que necesita hacer para hacer uso de una barra de progreso vertical en su proyecto. Opcionalmente, puede tener imágenes personalizables de nueve parches que está utilizando para la barra de progreso. Debe realizar los cambios apropiados en el archivo progress_bar_vertical.xml. ¡Espero que esto lo ayude en su proyecto!
Aviso mi nuevo [respuesta] (http://stackoverflow.com/questions/3926395/android-set-a-progressbar- to-be-a-vertical-bar-instead-of-horizontal/40538069 # 40538069), espero que ayude a alguien :) –
http://android-coding.blogspot.co.uk/2013/02/implement-vertical- progressbar.html – Masoud