Android sólo descarga imágenes que son visibles en horizontalScrollView
Tengo un HorizontalScrollView que contiene un LinearLayout para sostener toda mi visión. Agrego aproximadamente 20 RelativeLayout que contiene un ImageView y TextView al LinearLayout. Me gustaría cargar imágenes sólo si el ImageView está en la pantalla (cuando me desplazo a ImageView).
Intenté seguir esta publicación para usar getHitRect()
, en la miniatura, sin embargo, el Rect (límites) para la miniatura siempre es 0, 0-0, 0, resultando en mi método para devolver false. ¿Qué estoy haciendo mal?
- Notificando un solo hilo: notify, notifyAll o concurrent.locks.Condition?
- Lectura rápida de enteros pequeños endian de archivo
- Rendimiento de Android de ThreeJS
- Descomprimir archivos de una manera más rápida que usar java.util.zip en Android
- ¿Problemas comunes de rendimiento en Android?
ThumbnailLayout es mi LinearLayout dentro de la HorizontalScrollView
thumbnailScroll
es mi HorizontalScrollView
runOnUiThread(new Runnable() { @Override public void run() { Log.e(TAG, "running"); for (int i = 0; i < thumbnailLayout.getChildCount(); i++) { RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i); ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail); if (thumbnailIsOnScreen(thumbnail)) { Log.e(TAG, items.get(i).getTitle() + " has downloaded"); app.setImage(items.get(i).getThumbnailSmall(), thumbnail); } } } }); private boolean thumbnailIsOnScreen(ImageView thumbnail) { Rect bounds = new Rect(); thumbnail.getHitRect(bounds); Rect scrollBounds = new Rect(thumbnailScroll.getScrollX(), thumbnailScroll.getScrollY(), thumbnailScroll.getScrollX() + thumbnailScroll.getWidth(), thumbnailScroll.getScrollY() + thumbnailScroll.getHeight()); return Rect.intersects(scrollBounds, bounds); }
Editar Estoy tred usando TreeObserver y encontré que mi método para comprobar si las miniaturas están en la pantalla está mal. Todavía agarra todas las imágenes, y constantemente bucles (porque estoy usando onPreDrawListener?)
thumbnailLayout.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() { @Override public boolean onPreDraw() { Log.e(TAG, "running"); for (int i = 0; i < thumbnailLayout.getChildCount(); i++) { RelativeLayout view = (RelativeLayout) thumbnailLayout.getChildAt(i); ImageView thumbnail = (ImageView) view.findViewById(R.id.thumbnail); if (thumbnailIsOnScreen(thumbnail)) { Log.e(TAG, items.get(i).getTitle() + " has downloaded"); app.setImage(items.get(i).getThumbnailSmall(), thumbnail); } } return true; } });
- Iónicos 2 problemas de rendimiento de desplazamiento
- Rendimiento de bucle ArrayList en ART (Android Runtime Environment)
- Rendimiento Android alcanzado en versiones posteriores a 2.3.5 (phonegap / cordova)
- ¿Por qué ITelephony.aidl funciona?
- Es SharedPreferences tiempo de acceso?
- Float o doble?
- Android, cálculo del hash SHA-1 desde el archivo, el algoritmo más rápido
- Vista de reciclador - cambia el tamaño de la vista de elemento mientras se desplaza (para efecto de carrusel)
Necesita un ListView pero no hay HorizontallListView nativo en android. Puede intentar HorizontallListView por DevSmart . Funciona como una vista de lista nativa, con adaptadores y vistas personalizadas si lo desea.
Yo lo estoy usando en mi proyecto por la misma razón que tu, por lo que espero que esto pueda ayudarte.
¿Ha pensado en usar ViewPager? http://developer.android.com/reference/android/support/v4/view/ViewPager.html
Si eso no se ajusta a su diseño, necesita reemplazar la función ScrollView -> onScrollChanged y comprobar si su imagen en la pantalla comprueba la posición de la imagen (izquierda?) En comparación con la posición de desplazamiento.
- Android obtener altura y ancho disponibles para retrato y paisaje
- Autocompletar en android – para la búsqueda de youtube