android set rounded image implementation code

  • 2020-05-07 20:22:44
  • OfStack

 
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/layout" 
android:orientation="vertical" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
> 
</LinearLayout> 
package com.test.demo; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.Bitmap.Config; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.PorterDuff.Mode; 
import android.graphics.PorterDuffXfermode; 
import android.graphics.Rect; 
import android.graphics.RectF; 
import android.graphics.drawable.BitmapDrawable; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 

public class MyActivity extends Activity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

// Drawable drawable = getResources().getDrawable(R.drawable.bg); 
// BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; 
// Bitmap bitmap = bitmapDrawable.getBitmap(); 

LinearLayout layout = (LinearLayout) findViewById(R.id.layout); 
Drawable drawable = getResources().getDrawable(R.drawable.bg); 
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; 
Bitmap bitmap = bitmapDrawable.getBitmap(); 

BitmapDrawable bbb = new BitmapDrawable(toRoundCorner(bitmap, 30)); 
layout.setBackgroundDrawable(bbb); 
//ImageView imageView = (ImageView) findViewById(R.id.imgShow); 
//imageView.setImageBitmap(MyActivity.getRoundedCornerBitmap(bitmap)); 
//imageView.setImageBitmap(MyActivity.toRoundCorner(bitmap, 20)); 
} 
public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) { 

Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888); 
Canvas canvas = new Canvas(output); 

final int color = 0xff424242; 
final Paint paint = new Paint(); 
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
final RectF rectF = new RectF(rect); 
final float 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); 

return output; 
} 
} 

Related articles: