studio library from for adding android imageview picasso

android - library - Haga ImageView con la esquina redonda usando picasso



picasso get() load (6)

Sé que hay muchos enlaces disponibles para hacer ImageView Round Corner. Pero estoy usando la biblioteca Picasso para cargar imágenes. Remito el link para obtener un resultado. Pero el problema es que lo estoy usando en ListView y para el primer elemento de LIstView''s ImageView funciona perfectamente bien, pero la transformación restante no funciona.


Como he dicho here . Puede usar la clase MaskTransformation de la biblioteca picasso-transformations .

Ejemplo:

final Transformation transformation = new MaskTransformation(getContext(), R.drawable.rounded_convers_transformation); Picasso.with(activity).load(url).transform(transformation).into(imageView);

res / drawable / rounded_convers_transformation.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="5dp"/> <solid android:color="@color/black"/> </shape>

ACTUALIZACIÓN: Pero tenga en cuenta que también debe .resize(w,h) la imagen, porque si la imagen será grande, la ronda no será determinable



Puede usar esta clase para hacer esquinas redondeadas vista de imagen rectangular con Picasso, usarla así

final int radius = 5; final int margin = 5; final Transformation transformation = new RoundedCornersTransformation(radius, margin); Picasso.with(activity).load(url).transform(transformation).into(imageView);

Aquí está la clase RoundedCornersTransform.

Picasso.with(activity).load(url).transform(new RoundedCornersTransform(this)).into(imageView);


Puede usar la clase RoundedCornersTransformation de la biblioteca picasso-transformations .

Ejemplo:

package com.demo.picasso; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import com.squareup.picasso.Transformation; public class RoundedCornersTransform implements Transformation { @Override public Bitmap transform(Bitmap source) { int size = Math.min(source.getWidth(), source.getHeight()); int x = (source.getWidth() - size) / 2; int y = (source.getHeight() - size) / 2; Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); if (squaredBitmap != source) { source.recycle(); } Bitmap bitmap = Bitmap.createBitmap(size, size, source.getConfig()); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); BitmapShader shader = new BitmapShader(squaredBitmap, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); paint.setShader(shader); paint.setAntiAlias(true); float r = size / 8f; canvas.drawRoundRect(new RectF(0, 0, source.getWidth(), source.getHeight()), r, r, paint); squaredBitmap.recycle(); return bitmap; } @Override public String key() { return "rounded_corners"; } }


Siguiendo la respuesta de @ stevyhacker y esta relacionada , se me ocurrió esto:

import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import com.squareup.picasso.Transformation; public class RoundedCornersTransform implements Transformation { private static Bitmap createRoundedRectBitmap(Bitmap bitmap, float topLeftCorner, float topRightCorner, float bottomRightCorner, float bottomLeftCorner) { Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = Color.WHITE; final Paint paint = new Paint(); final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); final RectF rectF = new RectF(rect); Path path = new Path(); float[] radii = new float[]{ topLeftCorner, bottomLeftCorner, topRightCorner, topRightCorner, bottomRightCorner, bottomRightCorner, bottomLeftCorner, bottomLeftCorner }; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); path.addRoundRect(rectF, radii, Path.Direction.CW); canvas.drawPath(path, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect, rect, paint); return output; } @Override public Bitmap transform(Bitmap source) { int size = Math.min(source.getWidth(), source.getHeight()); int x = (source.getWidth() - size) / 2; int y = (source.getHeight() - size) / 2; Bitmap squaredBitmap = Bitmap.createBitmap(source, x, y, size, size); if (squaredBitmap != source) { source.recycle(); } float r = size / 4f; Bitmap roundedBitmap = createRoundedRectBitmap(squaredBitmap, r, r, r, r); squaredBitmap.recycle(); return roundedBitmap; } @Override public String key() { return "rounded_corners"; } }

Úsalo así:

Picasso.with(context).load(url).transform(new RoundedCornersTransform()).into(imageView);

Probablemente necesite algunas mejoras, así que ¡cuidado!


RoundedCornersTransformation clase RoundedCornersTransformation de la biblioteca picasso-transformations . Tenía un adaptador personalizado con patrón de soporte de vista en mi vista de lista. build.gradle debajo la dependencia en mi build.gradle :

dependencies { compile ''jp.wasabeef:picasso-transformations:2.1.0'' }

Y en mi customArrayAdapter.java , agregué:

Picasso.with(getContext()).load(path).transform(new RoundedCornersTransformation(10,10)).resize(175,300).into(viewHolder.ivImage);
Esto redimensionaría y le daría esquinas redondeadas a tus imágenes.