SwipeRefreshLayout: Desplazar la animación de progreso

Soy bastante nuevo en android y estoy explorando el código de ejemplo en el sitio web de Google. El código en el que estoy actualmente es el SwipeRefreshLayout: http://developer.android.com/samples/SwipeRefreshLayoutBasic/index.html

En el código, vemos el SwipeRefreshLayout ejecutándose para una lista, por lo que en otras palabras, si arrastra hacia abajo la vista de lista, se dispara el método y se actualiza la vista de lista.

<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swiperefresh" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout> 

Lo que me confunde es que no hay ningún diseño en el código de la barra de animación de progreso que se muestra en la parte superior de la lista cuando se arrastra hacia abajo. ¿Crees que el SwipeRefreshLayout genera automáticamente una barra de animación de progreso cuando la arrastras hacia abajo sin necesidad de que el usuario especifique un diseño en xml?

Por ejemplo, si uno quiere poner el relleno en ambos extremos de la barra de animación de progreso, para que la animación no toque los extremos de la pantalla cuando se actualiza, ¿cómo lo haría uno?

El https://developer.android.com/reference/android/support/v4/widget/SwipeRefreshLayout.html no dice nada al respecto.

No se puede cambiar la animación.

En SwipeRefreshLayout no se puede personalizar mucho; Creo que esto es un intento de Google para que los desarrolladores se adhieran a patrones comunes. Lo que puedes setColorScheme() son los cuatro colores de la animación, especificados con setColorScheme() .

SwipeRefreshLayout se encarga de mostrar su animación predefinida en su parte superior para usted. Esto puede ocurrir cuando canChildScrollUp() devuelve false y el usuario 'tira hacia abajo', o cuando establece setRefreshing(true) . Desactive la animación con setRefreshing(false) . Ponga su lógica en el método onRefreshing() del oyente. canChildScrollUp() si coloca algo que no es un ListView en su SwipeRefreshLayout . Deberías ser bueno para ir de aquí.

Aunque no puedes cambiarlo, todavía puedes ocultarlo y luego mostrar tu propio desencadenado una vez 🙂

 SwipeRefreshLayout swiperefresh = (SwipeRefreshLayout)root.findViewById(R.id.swiperefresh); swiperefresh.setOnRefreshListener(this); swiperefresh.setColorSchemeColors(0,0,0,0); swiperefresh.setProgressBackgroundColor(android.R.color.transparent); 

Notas:

  • En eclipse hay que agregar @SuppressLint ("ResourceAsColor") para compilar esto.

  • Todavía necesita llamar a setRefreshing (false) en un punto apropiado en el momento en que onRefresh no se activa de nuevo.

  • AppBarLayout + TabLayout + CollapsingToolbarLayout + SwipeToRefresh
  • Error de Android inflar clase SwipeRefreshLayout
  • ¿Cómo deshabilitar la acción "pull to refresh" y usar sólo el indicador?
  • IllegalArgumentException: pointerIndex fuera de rango desde SwipeRefreshLayout
  • ¿Cómo configurar la vista de actualización personalizada en SwipeRefreshLayout?
  • SwipeRefreshLayout + ViewPager, limitar el desplazamiento horizontal solamente?
  • Barra de herramientas que no se muestra con desplazamiento para actualizar
  • HorizontalScrollView dentro de SwipeRefreshLayout
  • Cómo detener ScrollView desde el desplazamiento hasta la parte inferior de la página cargada actual en WebView
  • ¿Cómo usar SwipeRefreshLayout?
  • SwipeRefreshLayout detrás de ActionBar
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.