Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Por qué "tirar para actualizar" no se ha convertido en una característica estándar en las aplicaciones móviles?

¿Por qué "tirar para actualizar" no se ha convertido en una característica estándar en las aplicaciones móviles?

La interacción del usuario de tirar para actualizar fue inventada por primera vez por el fundador de Twitter, Loren Brichter. Loren Brichter inventó la actualización desplegable. La base teórica es que la actualización desplegable es una aplicación que organiza los feeds en orden cronológico del más reciente al más antiguo. En este caso, los usuarios naturalmente buscarán contenido más nuevo después de leer el contenido anterior. Esto es muy razonable. Puede consultar este artículo: Actualización desplegable interesante. A continuación, publiqué un caso de actualización desplegable interesante.

2. Principio de implementación

Los ejemplos anteriores tienen una apariencia muy agradable, pero su esencia es la misma, es decir, un control de actualización desplegable generalmente consta de las siguientes partes:

1Encabezado

El encabezado generalmente tiene flechas desplegables, texto, barras de progreso y otros elementos. El estado del menú desplegable cambia según la distancia, mostrando así diferentes estilos.

2Contenido

Esta parte es el área de contenido. Hay muchos ejemplos en Internet de cómo agregar un encabezado directamente al ListView, pero esto tiene limitaciones, porque en muchos casos no es necesario. para utilizar ListView para mostrar datos. Colocamos la Vista que queremos mostrar contenido en uno de los contenedores. Si quiero implementar una actualización desplegable para mostrar datos en un ListView, necesito crear un ListView que pueda rotarse en mi contenedor. Manejaremos los eventos para ese contenedor (abajo, mover, arriba) y si se despliega, deslizaremos todo el diseño hacia abajo para revelar el título.

3 pies de página

El pie de página se puede utilizar para mostrar flechas desplegables, cargar automáticamente más barras de progreso, etc.

Hay algunos puntos a tener en cuenta sobre la imagen de arriba:

1. Este diseño extiende LinearLayout y está alineado verticalmente

2. la parte inferior es: encabezado, contenido, pie de página

3, el orden de arriba a abajo es: encabezado, contenido, pie de página

4: encabezado, contenido, pie de página

3, el contenido llena el control principal, y el encabezado y el pie de página son invisibles configurando el relleno superior e inferior, es decir, sacándolos de la pantalla.

4 Al desplegar, llame al método scrollTo para. deslice todo el diseño hacia abajo, para mostrar el encabezado, levantarlo es todo lo contrario de bajarlo.

5. La función que la clase derivada debe implementar es: llenar la Vista de contenido en el contenedor principal. Por ejemplo, si desea usarlo, debe agregar ListView, ScrollView, WebView, etc. . al contenedor.

6. El área roja en la imagen de arriba es el tamaño de la pantalla (estrictamente hablando, el tamaño de la pantalla aquí no es exacto, debe decirse que el área de contenido es más precisa)

3. Implementación específica

Después de comprender los principios y procesos de implementación, intentamos ser lo más concretos posible. Primero, para expandirnos mejor en el futuro y hacer que el diseño sea más razonable. abstraiga la función de actualización desplegable en una interfaz:

1. IPullToRefreshlt; T extiende Viewgt

Su definición específica es la siguiente:

[java] ver copia simple

interfaz pública IPullToRefreshlt.T extiende Viewgt; {

public void setPullRefreshEnabled(boolean pullRefreshEnabled

public void setPullLoadEnabled(boolean pullLoadEnabled); /p>

public void setScrollLoadEnabled(boolean scrollLoadEnabled);

public boolean isPullRefreshEnabled();

public boolean isPullLoadEnabled();

public boolean isScrollLoadEnabled; ();

public void setOnRefreshListener( OnRefreshListenerlt ; Tgt; refrescoListener);

public void onPullDownRefreshComplete()

public void onPullUpRefreshComplete(); >

public T getRefreshableView();

public LoadingLayout getHeaderLoadingLayout();

public LoadingLayout getFooterLoadingLayout()

public void setLastUpdatedLabel(CharSequence label)

}

super.onCreate(savedInstanceState);

mPullListView = new PullToRefreshListView(this);

// PullLoad no está disponible

mPullListView.setPullLoadEnabled(false);

// Desplázate hasta el final de carga automática disponible

mPullListView .setScrollLoadEnabled(true);

mCurIndex = mLoadDataCount

mListItems = nuevo Li;

nkedListlt; Stringgt ();

mListItems.addAll(Arrays.Arrays.AddAll

mListItems.addAll(Arrays.Arrays.AddAll); mListItems.addAll(Arrays.Arrays.AddAll);

mListItems.addAll(Arrays.Arrays.AddAll)addAll(Arrays.asList(mStrings).subList(0, mCurIndex)); p> mAdapter = new ArrayAdapterlt; Stringgt; (this, android.R.layout.simple_list_item_1, mListItems);

// Obtener el ListView real

mListView = mPullListView.getRefreshableView() ;

// Vincular datos

mListView.setAdapter(mAdapter.getRefreshableView()

mListView.setAdapter(mAdapter.getRefreshableView()).setAdapter ( mAdapter);

// Establece el detector de actualización desplegable

mPullListView.setOnRefreshListener(new OnRefreshListenerlt; ListViewgt; () {

@Override

public void onPullDownToRefresh(PullToRefreshBaselt; ListViewgt; refrescoView) {

mIsStart = true

new GetDataTask().execute();

@Override

public void onPullUpToRefresh(PullToRefreshBaselt; ListViewgt; refrescoView) {

mIsStart = false

new GetDataTask(). ejecutar ();

}

})

});

setLastUpdateTime(); / Actualización automática

mPullListView.doPullRefreshing(true, 500);

}

Esto inicializará el diseño para la actualización desplegable y llamará a setContentView para configurarlo. en la Actividad.

Una vez completada la actualización desplegable, podemos llamar a los métodos onPullDownRefreshComplete() y onPullUpRefreshComplete() para detener la actualización y la carga

5. Ejecución de resultados

La siguiente es una lista de demostración de los resultados de ejecución.

6. Descarga del código fuente

El marco para implementar este PullToRefresh no es original para mí. También me referí a muchos de código abierto y aprendí de cosas que creo que son mejores. formando el Para mis cosas, principalmente hice referencia a la siguiente demostración:

/chrisbanes/Android-> PullToRefresh Esta demostración es un buen ejemplo de cómo usar pull-to-refresh. La demostración de PullToRefresh está bien escrita, pero es demasiado complicada. Como todos sabemos, una vez que se vuelve complicada, si queremos agregar algunos requisitos, naturalmente requerirá un poco de esfuerzo para satisfacer nuestras necesidades. .