绘制一个矩形
public class AView extends View {
private static final String TAG = "FackMask";
private Paint paint;
private Rect rect;
private int left;
private int top;
private int right;
private int bottom;
private Canvas canvas;
public AView(Context context){
super(context);
initPaint();
}
public AView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, 0);
initPaint();
}
public AView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
}
/**
* 外部调用的接口
* */
public void setRect(int left,int top,int right,int bottom){
this.left=left;
this.top=top;
this.right=right;
this.bottom=bottom;
Log.d(TAG, "setRect: 控件");
postInvalidate();
invalidate();//更新调用onDraw重新绘制
}
private void initPaint(){
paint=new Paint();
left=100;
top=100;
right=300;
bottom=300;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);//设置空心
rect=new Rect(left,top,right,bottom);
canvas.drawRect(rect,paint);
}
}
方法一,在代码中add
public class MainActivity extends AppCompatActivity {
private Button bt1;
private AView aView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1=findViewById(R.id.bt1);
LinearLayout linearLayout = findViewById(R.id.main);
aView = new AView(MainActivity.this);
linearLayout.addView(aView);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
aView.setRect(200,200,800,800);
}
});
// aView=findViewById(R.id.aa);
// bt1.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// aView.setRect(200,200,800,800);
// }
// });
}
}
2,在布局中add
public class MainActivity extends AppCompatActivity {
private Button bt1;
private AView aView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1=findViewById(R.id.bt1);
LinearLayout linearLayout = findViewById(R.id.main);
// aView = new AView(MainActivity.this);
// linearLayout.addView(aView);
// bt1.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// aView.setRect(200,200,800,800);
// }
// });
aView=findViewById(R.id.aa);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
aView.setRect(200,200,800,800);
}
});
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/main"
tools:context=".MainActivity">
<Button
android:id="@+id/bt1"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
<com.dtsz.dtsz.myapplication.AView
android:id="@+id/aa"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
</LinearLayout>