一、概述
当Android系统提供的UI组件不足以满足我们的需求时,我们可以自己继承View来设计自己的View。然后选择重写部分的方法。下面我们来写一个简单例子:自定义View绘制图片
二、代码、效果图、注意点
1、主要代码
public class CustomView extends View {
Paint paint = new Paint();//画笔
Bitmap bitmap;
// public CustomView(Context context) {
// super(context);
// }
//必须要实现的构造函数
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
}
// public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
// super(context, attrs, defStyleAttr);
// }
//
// @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
// public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
// super(context, attrs, defStyleAttr, defStyleRes);
// }
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setAntiAlias(true);//设置是否抗锯齿
paint.setStyle(Paint.Style.STROKE);//设置画笔风格
bitmap = BitmapFactory.decodeResource(getResources(),
R.mipmap.ic_launcher); // 获取bitmap【项目资源目录】
if (bitmap != null) {// 不建议在onDraw做任何分配内存的操作
canvas.drawBitmap(bitmap, 0, 0, paint);
}
}
}
2、效果图
3、注意点
若我们只通过XML布局的方式往Activity中添加我们自定义的View时,必须重写双参的构造函数。
否则报错如:Binary XML file line #19: Error inflating class com.luminal.view.CustomVie