implementar glide dev dependencia adding android image-loading picasso

glide - Android Picasso: diseño de imagen de marcador de posición y error



picasso kotlin (5)

Estoy usando la biblioteca de Picasso para descargar imágenes de la red. Me pregunto si puedo usar un cuadro de diálogo de progreso o una imagen GIF como marcador de posición. ¿Alguna idea sobre cómo hacer que la imagen del marcador de posición sea más pequeña (y que quepa en el centro) que la imagen real que se descarga?

Intenté ir a través de las muestras, pero no tuve suerte. ¿Alguien aquí que consiguió esto para trabajar?


Debes configurar tu ProgressBar además de la biblioteca de Picasso y debes administrar la visibilidad de la misma manualmente usando oyentes.

Estoy usando UniversalImageLoader y la biblioteca de Picasso debería ser muy similar.

private ImageLoadingListener photoSuccess = new ImageLoadingListener() { @Override public void onLoadingStarted(String imageUri, View view) { } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { if(progress != null) progress.setVisibility(View.GONE); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { if(progress != null) progress.setVisibility(View.GONE); if(mImage != null) mImage.setVisibility(View.VISIBLE); } @Override public void onLoadingCancelled(String imageUri, View view) { } };


Es muy simple mostrar la barra de progreso.

Agregue este código a la actividad para cargar la imagen con la barra de progreso.

Picasso.with(this) .load(hoteImageStr) .error(R.drawable.loading) .into(img, new com.squareup.picasso.Callback() { @Override public void onSuccess() { if (progress != null) { progress .setVisibility(View.GONE); } } @Override public void onError() { } });

Agregue esto a su archivo de diseño.

<RelativeLayout android:id="@+id/hoteldetails_myContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ProgressBar android:id="@+id/hoteldetails_progressBar" style="?android:attr/progressBarStyleSmall" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center" android:visibility="gone" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginTop="20dp" android:layout_marginBottom="20dp" /> <ImageView android:id="@+id/hoteldetails_imageView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitXY" /> </RelativeLayout>


Implementé el diálogo de progreso hasta la descarga de la imagen y es muy simple. Tome su ImageView en diseño relativo y coloque el cargador de progreso en la misma vista de imagen. Aplique el código siguiente y maneje solo la visibilidad del diálogo de progreso.

holder.loader.setVisibility(View.VISIBLE); holder.imageView.setVisibility(View.VISIBLE); final ProgressBar progressView = holder.loader; Picasso.with(context) .load(image_url) .transform(new RoundedTransformation(15, 0)) .fit() .into(holder.imageView, new Callback() { @Override public void onSuccess() { progressView.setVisibility(View.GONE); } @Override public void onError() { // TODO Auto-generated method stub } }); }

Espero que ayude a alguien! :)


primero crea un diseño dibujable como este:
progress_animation.xml:

<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/loading" android:pivotX="50%" android:pivotY="50%"/>


agrega loading.png a dibujable

Uso:

Picasso.with(context).load(imageUri).placeholder(R.drawable.progress_animation).into(imgView);


Puede usar una imagen de marcador de posición usando el marcador * .placeable (R.drawable.image_name) * en su llamada a Picasso como:

Picasso.with(context) .load(imageUrl) .placeholder(R.drawable.image_name)

Si desea utilizar una barra de progreso en lugar de una imagen de marcador de posición, puede crear una devolución de llamada dentro de la función .into . Haz algo similar a lo siguiente:

en su opinión:

//create the progressBar here and set it to GONE. This can be your adapters list item view for example <RelativeLayout android:id="@+id/myContainer" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_marginTop="20dp" android:layout_marginBottom="20dp"/> <ImageView android:id="@+id/myImageView" android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center" android:layout_margin="5dp" android:paddingLeft="60dp" android:scaleType="centerCrop"></ImageView> </RelativeLayout>

En su adaptador / clase:

//create a new progress bar for each image to be loaded ProgressBar progressBar = null; if (view != null) { progressBar = (ProgressBar) view.findViewById(R.id.progressBar); progressBar.setVisibility(View.VISIBLE); } //get your image view ImageView myImage = (ImageView) view.findViewById(R.id.myImageView); //load the image url with a callback to a callback method/class Picasso.with(context) .load(imageUrl) .into(myImage, new ImageLoadedCallback(progressBar) { @Override public void onSuccess() { if (this.progressBar != null) { this.progressBar.setVisibility(View.GONE); } } });

dentro de su adaptador / clase como arriba, creo una clase interna para la devolución de llamada:

private class ImageLoadedCallback implements Callback { ProgressBar progressBar; public ImageLoadedCallback(ProgressBar progBar){ progressBar = progBar; } @Override public void onSuccess() { } @Override public void onError() { } }

Espero que esto tenga sentido!