Android新手自己写了一个RoundImage(继承ImageView,主要是将一张图片显示为圆的)

CoolEgos CoolEgos 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
代码是这个:


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){
// 通过本地的设置圆头像的半径
}

}


但是显示的不是我想要的,我希望画图的时候的背景是我类里面的mbitmap。
怎么弄,Android新手的问题,求助???
...全文
评论
收藏 已收藏
分享
返回顶部
CoolEgos
Android 80,490 成员 91,375 内容