studio library implementar glide dev dependencia adding android imageview picasso

library - picasso android dev



Uso de la biblioteca de picasso con una vista de cĂ­rculo (5)

Estoy buscando usar la biblioteca de Picasso para descargar una imagen de la URL y pasar esto a la vista de la imagen del círculo, pero dado que picasso requiere que se pase una imagen real View, me he detenido en la forma de hacerlo

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

Aquí está el comienzo 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"


No creo que necesites la biblioteca CircleImageView

Puede implementar la Transformación Circular verifique la esencia siguiente

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

entonces

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


Tome primero la identificación de CircleImageView:

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í.


Use este código para crear una vista de imagen 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; } }


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 está funcionando bien.


RoundedBitmapDrawable una clase de destino que usa la clase RoundedBitmapDrawable de Android nativa para hacer que la imagen sea redonda (elimina la necesidad de agregar una clase de transformación de círculo a 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); } }