80,359
社区成员
发帖
与我相关
我的任务
分享
import com.zf.example.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Shader;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.ImageView;
/*
* 自定义一个RoundImage,用于显示客户的图像
* 主要的不同是图像是圆的
*
* */
public class RoundImage extends ImageView {
private Paint imagePaint = new Paint(); // 头像的画笔
private Paint borderPaint = new Paint(); // 边框的画笔
//private Matrix matrix = new Matrix(); //
private int imageRadius; // 圆头像的半径
private int borderRadius; // 外边的边界半径
private Bitmap mbitmap; // 头像
private BitmapShader mbitmapShader; // 渲染器,画一个带有渲染效果的图
public RoundImage(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public RoundImage(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public RoundImage(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
super.setScaleType(ScaleType.CENTER_CROP);
// TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RoundImage, defStyle, 0);
// a.recycle();
imagePaint.setColor(Color.GRAY); //颜色
imagePaint.setStyle(Paint.Style.STROKE);
imagePaint.setStrokeWidth(1);
//imagePaint.setShader(mbitmapShader);
// 画边框
borderPaint.setStyle(Paint.Style.STROKE);
borderPaint.setAntiAlias(true);
borderPaint.setColor(Color.RED);
borderPaint.setStrokeWidth(5);
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
// 可以自己任意画
super.onDraw(canvas);
// 渲染
// mbitmapShader = new BitmapShader(mbitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
// 画头像
//canvas.drawRect(rec, paint);
canvas.drawCircle(50, 50, 50, imagePaint);
canvas.drawCircle(50, 50, 50, borderPaint);
//this.draw(canvas);
}
@Override
public void setImageDrawable(Drawable drawable) {
// TODO Auto-generated method stub
super.setImageDrawable(drawable);
}
@Override
public void setImageBitmap(Bitmap bm) {
// TODO Auto-generated method stub
// 容器内设置图片
super.setImageBitmap(bm);
}
@Override
public void setImageResource(int resId) {
// TODO Auto-generated method stub
super.setImageResource(resId);
}
public void setBackground(int id){
// 通过本地的设置圆头像的半径
}
}