android 圆形图片显示,Android显示圆形图片

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);

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值