第一步:为帧布局管理器设置id属性
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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:id="@+id/frameLayout"
tools:context=".MainActivity">
</FrameLayout>
第二步:绘制图形,自定义View
创建MyView.java
package com.example.android;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制机器人
Paint paint=new Paint();//创建一个画笔
paint.setAntiAlias(true);//采用抗锯齿功能,可以让线更圆滑
paint.setColor(0xFFA4C739);//设置画笔颜色为绿色
//绘制机器人的头
RectF rectF=new RectF(10,10,100,100);//定义外轮廓矩形
rectF.offset(90,20);
canvas.drawArc(rectF,-10,-160,false,paint);//绘制弧
//绘制机器人的眼睛
paint.setColor(0xFFFFFFFF);//设置画笔为白色
canvas.drawCircle(165,53,4,paint);
canvas.drawCircle(125,53,4,paint);
//绘制天线
paint.setColor(0xFFA4C739);
paint.setStrokeWidth(2);//设置笔触宽度
canvas.drawLine(110,15,125,35,paint);
canvas.drawLine(180,15,165,35,paint);
//绘制身体
canvas.drawRect(100,75,190,150,paint);//绘制矩形
//绘制圆角矩形
RectF rectF_body=new RectF(100,140,190,160);
canvas.drawRoundRect(rectF_body,10,10,paint);
//绘制胳膊
RectF rectF_arm=new RectF(75,75,95,140);
canvas.drawRoundRect(rectF_arm,10,10,paint);
rectF_arm.offset(120,0);
canvas.drawRoundRect(rectF_arm,10,10,paint);
//绘制腿
RectF rectF_leg=new RectF(115,150,135,200);
canvas.drawRoundRect(rectF_leg,10,10,paint);
rectF_leg.offset(40,0);
canvas.drawRoundRect(rectF_leg,10,10,paint);
}
}
第三步:将自定义View添加到布局管理器中
MainActivity.java
package com.example.android;
import android.os.Bundle;
import android.widget.FrameLayout;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout frameLayout=findViewById(R.id.frameLayout);
frameLayout.addView(new MyView(this));//将自定义View添加到布局管理器中
}
}
运行结果: