1.问题
我们知道自定义view的时候会重写onDraw()方法,如下:
public class MyView extends View {
private Paint paint;
private Rect rect;
private Bitmap bitmap;
private Matrix matrix;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.BLUE);
rect = new Rect(0,0,100, 100);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawRect(rect, paint);
}
}
效果图:
蓝色的方块即是我们自定义MyView绘制的。
现在自定义一个ViewGroup:MyFrameLayout,并把MyView添加到MyFrameLayout里。
public class MyFrameLayout extends FrameLayout {
private Paint paint;
private RectF rectF;
public MyFrameLayout(@NonNull Context context) {
super(context);
init();
}
public MyFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public MyFrameLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
private void init() {
addView(new MyView(getContext()));
paint = new Paint();
paint.setAntiAlias(true);
paint.setColor(Color.RED);