Ho uno ListView
in cui è presente uno ImageView
, l'immagine nello ImageView
viene caricata dinamicamente dopo essere stata recuperata dal server. Ora, voglio che queste immagini, di qualsiasi dimensione, si adattino a una cornice circolare, come fare? Ecco una foto del campione di ciò che voglioCome convertire un'immagine in una cornice circolare in Android
risposta
Con l'aiuto di risposta precedente sono arrivato fino a questo solution.Hope è aiutare gli altri:
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.widget.ImageView;
public class CircleImage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.circle_layout);
ImageView img1 = (ImageView) findViewById(R.id.imageView1);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.hair_four);
Bitmap resized = Bitmap.createScaledBitmap(bm, 100, 100, true);
Bitmap conv_bm = getRoundedRectBitmap(resized, 100);
img1.setImageBitmap(conv_bm);
// TODO Auto-generated method stub
}
public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int pixels) {
Bitmap result = null;
try {
result = Bitmap.createBitmap(200, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
int color = 0xff424242;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, 200, 200);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawCircle(50, 50, 50, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
} catch (NullPointerException e) {
} catch (OutOfMemoryError o) {
}
return result;
}
}
Per un'implementazione leggermente più efficiente, fai riferimento alla recente [** Ricetta Android # 1 di Romain Guy, con gli angoli arrotondati **] (http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/) post sul blog. La differenza principale consiste nell'usare un 'BitmapShader' per controllare direttamente l'area 'testurizzata' visibile, che semplifica la logica di disegno in una singola chiamata di disegno. –
Ehi Sanghita, mi sono imbattuto nello stesso requisito e mi è capitato di usare il tuo codice anche se funziona bene per la visualizzazione dell'immagine che ho un problema. Ho sostituito la seguente riga di codice con la mia per aumentare la vista dell'immagine come canvas.drawCircle (90 , 90,90, vernice); poiché canvas.drawCircle (50, 50,50, paint); ha dato una piccola visualizzazione del display. Tuttavia, solo 1 quarto dell'immagine è stata visualizzata nell'immagini.Puoi aiutarci? – joy
cambia le seguenti righe come: Bitmap ridimensionato = Bitmap.createScaledBitmap (bm, 600, 600, true); Bitmap conv_bm = getRoundedRectBitmap (ridimensionato, 600); result = Bitmap.createBitmap (950, 950, Bitmap.Config.ARGB_8888); Rect rect = new Rect (0, 0, 650, 650); canvas.drawCircle (300, 300, 300, paint); – Sanghita
provare questo codice:
public static Bitmap getRoundedRectBitmap(Bitmap bitmap, int pixels) {
try {
result = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(),
Bitmap.Config.ARGB_8888);
canvas = new Canvas(result);
color = 0xff424242;
paint = new Paint();
rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
rectF = new RectF(rect);
roundPx = pixels;
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
} catch (NullPointerException e) {
// return bitmap;
} catch (OutOfMemoryError o){}
return result;
}
Se si desidera un cerchio reale, allora si può passare 100px
come parametro.
Grazie una tonnellata per il vostro aiuto, la soluzione che hai fornito era per le immagini in angoli più arrotondati rettangolo senza modifica delle dimensioni. Servivano solo poche righe di modifica – Sanghita
@ ricintech- puoi ragazzi spiegare per favore come cambiare la dimensione del cerchio disegnato con questo codice! l'immagine che si ritaglia e tutto il resto è perfetto ma non riesco a capire come aumentare o diminuire il raggio del cerchio – Khay
Aggiornamento
C'è un CircleImageView
disponibile su Github.
È possibile ottenere l'ultima versione da Maven repository come aggiunta come dipendenza gradle.
Ci sono un sacco di esercitazione per quanto riguarda questo. Penso che aiuterà.
https://github.com/lopspower/CircularImageView
Possiamo gestire l'altezza e la larghezza di un'immagine dal codice XML e disegnare cerchio/ovale dal codice Java come
<ImageView
android:id="@+id/imageView1"
android:layout_width="@dimen/width"
android:layout_height="@dimen/height"
/>
per la vista ovale
ImageView img1 = (ImageView) findViewById(R.id.imageView1);
Bitmap bm = BitmapFactory.decodeResource(getResources(),
R.drawable.user_image);
Bitmap conv_bm = getRoundedBitmap(bm);
img1.setImageBitmap(conv_bm);
public static Bitmap getRoundedBitmap(Bitmap bitmap)
{
final Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(output);
final int color = Color.RED;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return output;
}
}
public static Bitmap getCircleBitmap(Bitmap bitmap) {
final Bitmap circuleBitmap = Bitmap.createBitmap(bitmap.getWidth(),
bitmap.getWidth(), Bitmap.Config.ARGB_8888);
final Canvas canvas = new Canvas(circuleBitmap);
final int color = Color.RED;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getWidth());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
bitmap.recycle();
return circuleBitmap;
}
- 1. nella cornice circolare iOS
- 2. Come aggiungere una maschera circolare a una UIImageview e cambiare cornice e centro mentre si fa?
- 3. come creare un imageButton circolare in Android?
- 4. Come implementare l'elenco circolare circolare in java?
- 5. Android: come salvare una cornice di anteprima come immagine jpeg?
- 6. Android - Come creare una vista circolare con Android?
- 7. Come convertire una bitmap in Drawable in Android?
- 8. Come posso convertire una stringa in title case in Android?
- 9. Come posso convertire una bitmap in formato PDF in Android
- 10. Android Come convertire una stringa in una modificabile
- 11. conversione più righe di testo in una cornice di dati
- 12. Come convertire LayerDrawable in Drawable in Android?
- 13. Come convertire stringa in unicode in Android
- 14. come convertire TextView in ImageView in Android
- 15. galleria circolare Android?
- 16. come fare piena vista immagine circolare in Android
- 17. Come trovare una cornice di lettura aperta in Python
- 18. Come combinare due vettori in una cornice di dati
- 19. Come mostrare il testo circolare usando TextView in Android
- 20. Frammento mappa Google in una vista circolare
- 21. Come convertire Android Visualizza in PDF
- 22. Come convertire un int in una stringa?
- 23. Come implementare un ticker circolare circolare (contatore) in Java?
- 24. Convertire una pagina Pdf in Bitmap in Android Java
- 25. Maschera Alpha gradiente circolare Android
- 26. assegnazione circolare in R
- 27. Costruisci una tela calibro 5 circolare circolare
- 28. Android: come convertire l'intero ImageView in Bitmap?
- 29. Android - come convertire html in pdf?
- 30. Griglia all'interno di una cornice?
Prova questa. http://stackoverflow.com/questions/5882180/how-to-set-bitmap-in-circular-imageview spero che vi aiuterà a –