móviles - manual de programacion android pdf
Cuando la barra de progreso indeterminada viene a la biblioteca de soporte de Android (3)
Esta es una respuesta a una pregunta anterior, pero pensé que a otros lectores les podría interesar esta solución:
Las versiones más nuevas (26.1. +) De la biblioteca de soporte contienen una clase llamada CircularProgressDrawable
que implementa el aspecto exacto del material nativo indeterminado dibujable. Para poder usar esto fácilmente en un diseño, puedes construir un MaterialProgressBar
como este:
public class MaterialProgressBar extends ProgressBar{
// Same dimensions as medium-sized native Material progress bar
private static final int RADIUS_DP = 16;
private static final int WIDTH_DP = 4;
public MaterialProgressView(Context context, AttributeSet attrs) {
super(context, attrs);
// The version range is more or less arbitrary - you might want to modify it
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP
|| Build.VERSION.SDK_INT > Build.VERSION_CODES.O_MR1) {
final DisplayMetrics metrics = getResources().getDisplayMetrics();
final float screenDensity = metrics.density;
CircularProgressDrawable drawable = new CircularProgressDrawable(context);
drawable.setColorSchemeColors(getResources().getColor(R.color.colorPrimary));
drawable.setCenterRadius(RADIUS_DP * screenDensity);
drawable.setStrokeWidth(WIDTH_DP * screenDensity);
setIndeterminateDrawable(drawable);
}
}
}
La interfaz de usuario de mi aplicación se ha creado utilizando la biblioteca de soporte de Android, pero actualmente no existe una versión de AppCompat de la barra de progreso (intederminate), que mi aplicación realmente necesita.
Preferiría no usar bibliotecas de terceros para lograr barras de progreso de diseño de materiales, por lo que me pregunto si alguien se sentará en la información sobre por qué no está incluido en la biblioteca de soporte y si hay alguna señal de que llegue (y cuándo).
Puede utilizar una barra de ProgressBar
con un estilo AppCompat .
Solo agrega esto en tu diseño:
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="visible" />
Si desea utilizar una barra de progreso horizontal:
<ProgressBar
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="8dp"
android:layout_marginTop="24dp"
android:indeterminate="true"
android:visibility="visible" />
Siguen las guidelines materiales oficiales.
Solo intento mejorar la respuesta del Sr. Gabriele Mariotti utilizando estilos.
Escribe un estilo como este
<style name="infinite_progress_horizontal" parent="Widget.AppCompat.ProgressBar.Horizontal"> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">wrap_content</item> <item name="android:indeterminate">true</item> </style>
Úsalo con tu barra de progreso de esta manera.
<ProgressBar style="@style/infinite_progress_horizontal" />