第一步:爲幀佈局管理器設置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添加到佈局管理器中
}
}
運行結果: