package com.liang.round;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.view.View;
public class MyView extends View {
private Bitmap bmp = null;
private Paint paint = null;
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
paint = new Paint();
BitmapFactory.Options options = new
BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(context.getResources(),
R.drawable.test ,options);
options.inJustDecodeBounds = false;
Bitmap tempBmp =
BitmapFactory.decodeResource(context.getResources(),
R.drawable.test ,options);
int width = options.outWidth;
int height = options.outHeight;
int size = width>height?height:width;//边框
int pos = (int)(size/2);
double radius = pos * Math.sin(45 * 180 / Math.PI);
size = (int)(radius * 2);
pos = (int)(size/2);
bmp = Bitmap.createBitmap(size, size, Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
Rect rect = new Rect(0, 0, size, size);
paint.setAntiAlias(true);
canvas.drawCircle(pos, pos, (float)radius, paint);
paint.setXfermode(new
PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));
canvas.drawBitmap(tempBmp, rect, rect, paint);
tempBmp.recycle();
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if(bmp != null){
if(!bmp.isRecycled()){
canvas.drawBitmap(bmp, 100, 100, paint);
}
}
}
}