2016-07-06 53 views

回答

0

您可以使用此

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.image); 
RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), bitmap); 
circularBitmapDrawable.setCircular(true); 
userImage.setImageDrawable(circularBitmapDrawable); 
+0

RoundedBitmapDrawable未識別 –

+0

您是否已導入支持庫文件。 –

0

與ImageView的問題是,你的ImageViews背景是圓形的,但你在你的Android設置圖像:SRC =「」是不是圓形,這就是爲什麼你得到這樣的圖像

我前幾天也在尋找一個圓形的ImageView,我發現這使得任何ImageView四捨五入而不使用任何庫

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 = null; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP 
     && drawable instanceof VectorDrawable) { 
     ((VectorDrawable) drawable).draw(canvas); 
     b = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas c = new Canvas(); 
     c.setBitmap(b); 
     drawable.draw(c); 
    } 
    else { 
     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; 
} 
    } 

但是,如果你想使用一個圖書館看看這個https://github.com/vinc3m1/RoundedImageView

+0

VectorDrawable無法解析爲類型 –

0

使用圖像作爲.png格式,然後只圖像背景透明,形象展示圓內。