Android新手自己写了一个RoundImage(继承ImageView,主要是将一张图片显示为圆的)
代码是这个:
但是显示的不是我想要的,我希望画图的时候的背景是我类里面的mbitmap。
怎么弄,Android新手的问题,求助???
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新手的问题,求助???
...全文
相关推荐
roundImage(自定义圆形图片)
总之,“roundImage(自定义圆形图片)”这个项目为我们提供了一种自定义解决方案,它允许我们在iOS应用中方便地显示圆形图片,同时保留了图片的完整信息。
Android 圆形、圆角图片
这个【标题】"Android 圆形、圆角图片" 指的是一个Android应用示例,它展示了一个自定义的ImageView组件,能够显示圆角或者完全圆形的图片。
android圆形图片控件
**自定义ImageView**:开发者可以创建一个继承自ImageView的自定义控件,然后在`onDraw()`方法中重写绘图逻辑。
RoundImageView
首先,RoundImageView是基于Android原生的ImageView进行扩展的自定义控件,它的主要功能是将方形的图片转换为圆形展示,使得图片在界面上呈现出更加美观、统一的视觉效果。
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf


