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

CoolEgos 2014-07-30 10:50:05
代码是这个:


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新手的问题,求助???
...全文
163 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,359

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧