Uso de la biblioteca picasso con una vista de imagen circular

Estoy buscando en el uso de la biblioteca de Picasso para descargar una imagen de la URL y pasar esto en la imagen de la imagen circular, pero ya que picasso requiere que pase en una imagen realVeré a un estancamiento sobre la forma de hacerlo

Estoy usando la biblioteca de picasso de aquí http://square.github.io/picasso/ y la clase de la opinión de la imagen del círculo de aquí https://github.com/hdodenhof/CircleImageView

Aquí está el inicio de mi código para obtener la imagen

private void getData() { userName.setText(prefs.getString("userName","")); jobTitle.setText(prefs.getString("profile","")); userLocation.setText(prefs.getString("location","")); // ?????? // Picasso.with(context).load(image link here).into(imageview here); //CircleImageView img = new CircleImageView(this); //img.setImageResource(); //img.setImageBitmap(); //img.setImageDrawable(); //img.setImageURI(); } 

Editar:

Aquí está el xml para el círculoImageView

 <michael.CircleImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/shadow" android:layout_gravity="center" android:layout_marginTop="16dp" app:border_width="2dp" app:border_color="#274978" android:id="@+id/circleImageView" 

Utilizar esta

Clase de actividad

 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String imageUrl = "https://www.baby-connect.com/images/baby2.gif"; CircleImageView imageView = (CircleImageView) findViewById(R.id.image); Picasso.with(getApplicationContext()).load(imageUrl) .placeholder(R.drawable.images).error(R.drawable.ic_launcher) .into(imageView); } } 

Archivo de diseño

 <de.hdodenhof.circleimageview.CircleImageView android:id="@+id/image" android:layout_width="160dp" android:layout_height="160dp" android:layout_centerInParent="true" android:src="@drawable/images" app:border_color="#ffffff" app:border_width="2dp" /> 

Esto funciona bien.

No creo que necesite la biblioteca CircleImageView

Puede implementar Transformación circular. Compruebe lo siguiente

https://gist.github.com/julianshen/5829333

entonces

 Picasso.with(activity).load(image link here) .transform(new CircleTransform()).into(ImageView); 

Utilice este código para crear Imageview circular …

 public class RoundedImageView extends ImageView { public RoundedImageView(Context context) { super(context); // TODO Auto-generated constructor stub } public RoundedImageView(Context context, AttributeSet attrs) { super(context, attrs); } public RoundedImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onDraw(Canvas canvas) { Drawable drawable = getDrawable(); if (drawable == null) { return; } if (getWidth() == 0 || getHeight() == 0) { return; } Bitmap b = ((BitmapDrawable)drawable).getBitmap() ; Bitmap bitmap = b.copy(Bitmap.Config.ARGB_8888, true); int w = getWidth(), h = getHeight(); Bitmap roundBitmap = getCroppedBitmap(bitmap, w); canvas.drawBitmap(roundBitmap, 0,0, null); } public static Bitmap getCroppedBitmap(Bitmap bmp, int radius) { Bitmap sbmp; if(bmp.getWidth() != radius || bmp.getHeight() != radius) sbmp = Bitmap.createScaledBitmap(bmp, radius, radius, false); else sbmp = bmp; Bitmap output = Bitmap.createBitmap(sbmp.getWidth(), sbmp.getHeight(), Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xffa19774; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, sbmp.getWidth(), sbmp.getHeight()); paint.setAntiAlias(true); paint.setFilterBitmap(true); paint.setDither(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(Color.parseColor("#BAB399")); canvas.drawCircle(sbmp.getWidth() / 2+0.7f, sbmp.getHeight() / 2+0.7f, sbmp.getWidth() / 2+0.1f, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(sbmp, rect, rect, paint); return output; } } 

Tome el ID de CircleImageView primero:

 CircleImageView mCircleImageView = (CircleImageView)findViewById(R.id.circleImageView); 

Y pase la identificación a la biblioteca de Picasso:

 Picasso.with(mContext).load(Uri.parse(link)).placeholder(drawable).into(mCircleImageView); 

Esto funcionó para mí.

He creado una clase de destino que utiliza la clase RoundedBitmapDrawable de Android nativo para hacer la imagen redonda (elimina la necesidad de agregar una clase de transformación de círculo al código), consulte la solución a continuación:

 public class RoundedImageBitmapTarget implements Target { private final Context context; private final ImageView view; public RoundedImageBitmapTarget(Context context, ImageView view) { this.context = context; this.view = view; } @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { setBitmap(bitmap); } @Override public void onBitmapFailed(Drawable errorDrawable) { setBitmap(((BitmapDrawable) errorDrawable).getBitmap()); } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { setBitmap(((BitmapDrawable) placeHolderDrawable).getBitmap()); } public void setBitmap(Bitmap bitmap) { view.setImageDrawable(getRoundBitmap(context, bitmap)); } public static RoundedBitmapDrawable getRoundBitmap(Context context, Bitmap bitmap) { Resources res = context.getResources(); RoundedBitmapDrawable round = RoundedBitmapDrawableFactory.create(res, bitmap); round.setCircular(true); round.setTargetDensity(context.getResources().getDisplayMetrics()); return round; } public static void load(Context context, ImageView view, String url, int size, @DrawableRes int placeholder) { RoundedImageBitmapTarget target; Picasso.with(context).load(url) .resize(0, size) .placeholder(placeholder) .error(placeholder) .into(target = new RoundedImageBitmapTarget(context, view)); view.setTag(target); } } 
  • Imágenes de Picasso Library y GridView
  • Cómo agregar un token de autenticación en el encabezado de la biblioteca Picasso
  • Problemas con la recolección de basura y Picasso
  • Image uri no muestra imágenes en ImageView en algún dispositivo Android
  • ¿Cómo puedo utilizar Picasso para agregar icono a Marcador?
  • ¿Cómo puedo acceder a la imagen en caché de Picasso para hacer una intención de compartir?
  • Actualizar / cambiar el mapa de bits en caché utilizando Picasso y OkHttp
  • Borrar memoria caché de Picasso
  • Android borrar algunas fotos de caché Picasso
  • Cómo agregar cuadros a la imagen?
  • No puedo almacenar en caché las imágenes mientras que bindind la imagen usando MvvmCross
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.