So che ci sono molti link disponibili per rendere l'angolo rotondo ImageView
. Ma sto usando la libreria Picasso
per il caricamento dell'immagine .. Mi riferisco allo link per ottenere il risultato. Ma il problema è che lo sto usando in ListView
e per il LIstView's
primo articolo ImageView
funziona perfettamente ma per il rimanente una volta che la trasformazione non funziona.Realizza ImageView con Round Corner Usando Picasso
risposta
Sto usando questa trasformazione: https://gist.github.com/julianshen/5829333
Picasso.with(activity).load(url).transform(new CircleTransform()).into(imageView);
Superbo !!! Grazie mille ... Sostituisco 'canvas.drawCircle (r, r, r, paint);' con 'canvas.drawRoundRect (new RectF (0, 0, source.getWidth(), source.getHeight()), r, r, paint); 'per aggirare l'angolo rect – Akshay
Hai dimenticato di dire che la r deve essere cambiata perché funzioni, altrimenti crea il cerchio da RoundRect perché il raggio è troppo grande. – stevyhacker
Entrambi hanno dimenticato di dire che è necessario modificare r per 0 e size.getHeight() perché funzioni (nel mio caso). Questo è il codice finale: 'canvas.drawRoundRect (new RectF (0, 0, source.getWidth(), source.getHeight()), 0, source.getHeight(), paint);' –
È possibile utilizzare RoundedCornersTransformation classe di picasso-transformations biblioteca.
Esempio:
final int radius = 5;
final int margin = 5;
final Transformation transformation = new RoundedCornersTransformation(radius, margin);
Picasso.with(activity).load(url).transform(transformation).into(imageView);
se impostiamo 'android: scaleType = "centerCrop" 'a' ImageView' e l'immagine è ingrandita per riempire la vista, quindi il tuo metodo non ha effetto perché gli angoli arrotondati non sono visibili – Choletski
@Choletski usa anche CropTransformation (int width, int height) prima di RoundedCornersTransformation – NickUnuchek
@Choletski, probabilmente 'centerCrop()' può aiutare: 'Picasso.with (getContext()). load (uri) .centerCrop(). ridimensiona (larghezza, altezza) .transform (transformation) .into (imageView) ; '. – CoolMind
È possibile utilizzare questa classe per fare gli angoli arrotondati rettangolo visualizzazione dell'immagine con Picasso, usare in questo modo
Picasso.with(activity).load(url).transform(new RoundedCornersTransform(this)).into(imageView);
Ecco l'RoundedCornersTransform di classe.
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";
}
}
Questa è una soluzione n breve e perfetta in tutti i post sulla trasformazione degli angoli arrotondati su SO. Grazie mille :) – Atul
Come faccio a usare questo @stevyhacker per arrotondare solo i due angoli superiori ... Non riesco a capire quale parte devo cambiare? – Lion789
@ Lion789: Nella [biblioteca di picasso-trasformazioni] (https://github.com/wasabeef/picasso-transformations/blob/master/transformations/src/main/java/jp/wasabeef/picasso/transformations/RoundedCornersTransformation. java) mentionded seguito, è possibile impostare esattamente gli angoli arrotondati che si desidera, ad esempio: Picasso .con (mContext) .load (Murl) .resize (200, 200) .centerCrop() . transform (new RoundedCornersTransformation (2, 0, RoundedCornersTransformation.CornerType.LEFT)) .into (mImageView); –
ho usato RoundedCornersTransformation
classe di picasso-transformations
biblioteca. Ho avuto un adattatore personalizzato con schema di visualizzazione nel mio listview. Ho aggiunto sotto la dipendenza nel mio build.gradle
:
dependencies {
compile 'jp.wasabeef:picasso-transformations:2.1.0'
}
E nella mia customArrayAdapter.java
, ho aggiunto:
Picasso.with(getContext()).load(path).transform(new RoundedCornersTransformation(10,10)).resize(175,300).into(viewHolder.ivImage);
Ciò sia ridimensionare e dare angoli arrotondati a voi le immagini.
seguito @stevyhacker's answer e this related one, mi si avvicinò con questo:
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";
}
}
usare in questo modo:
Picasso.with(context).load(url).transform(new RoundedCornersTransform()).into(imageView);
probabilmente ha bisogno alcuni miglioramenti però, quindi occhio!
Come detto here. È possibile utilizzare la classe MaskTransformation
della libreria picasso-transformations.
Esempio:
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>
UPDATE: a meno di notare che si dovrebbe anche .resize(w,h)
l'immagine, perché se l'immagine sarà grande la volontà rotonda non essere determinabile
Bella soluzione. Si noti inoltre che prima di applicare questa trasformazione, 'ImageView' deve essere visibile (in caso contrario non verrà applicata alcuna trasformazione). E sì, è possibile scrivere 'Picasso.with (getContext()). Load (uri) .centerCrop(). Ridimensiona (larghezza, altezza) .transform (transformation) .into (imageView);' per immagini ritagliate. – CoolMind
- 1. Realizza ImageView adatta larghezza di CardView
- 2. Aggiungi Round Corner al UIImageView e display Ombra effetto
- 3. Picasso "Ridimensiona e centerCrop" o ImageView "centerCrop"?
- 4. Come ridimensionare il segnaposto di ImageView con picasso
- 5. : Realizza porte OR usando SOLO gate XOR
- 6. Salvare l'immagine dall'URL usando Picasso?
- 7. caso Corner in usando l'espressione lambda a base di costruttore
- 8. Carica bitmap con Picasso
- 9. Caricamento lento di immagini grandi con Picasso
- 10. personalizzato drawable con ImageView
- 11. Classe personalizzata ImageView non funzionante con la libreria di download di immagini Picasso
- 12. Picasso cache del disco
- 13. Utilizzo della libreria Picasso con ListView
- 14. ImageView con bitmap scaricate dall'URL (modalità ripetizione tile)
- 15. Rottura del round con numpy
- 16. Calcolo realizza classifiche incomplete
- 17. Picasso carica l'immagine con il triangolo nell'angolo dell'immagine
- 18. Come caricare lo sfondo del layout con Picasso
- 19. Elementi condivisi Android con Picasso
- 20. Picasso: memoria esaurita
- 21. acquisizione della larghezza e dell'altezza dell'immagine con la libreria Picasso
- 22. Problema di smarrimento dell'immagine Picasso quando si utilizza con RecyclerView
- 23. Come adattare l'immagine a ImageView usando Glide
- 24. Come verificare se un'immagine è stata caricata completamente con Picasso
- 25. Picasso - come ridimensionare il segnaposto
- 26. Realizza PDF/A conforme a PDF con le sole immagini usando iTextSharp
- 27. Problema di caricamento dell'immagine Picasso in GoogleMap.InfoWindowAdapter
- 28. Caricamento di più immagini con Picasso sullo sfondo
- 29. Android: Picasso non sta caricando alcune immagini
- 30. Uso della libreria picasso con una vista immagine circolare
Hai provato questa trasformazione? https: //gist.github.com/aprock/6213395 Uso: Picasso.with (context) .load (url) .transform (new RoundedTransformation()). into (imageView) –
@RoiDivon Ho appena usato il link che hai fornito, ma anche dando lo stesso effetto .. – Akshay