安卓开发学习笔记(12)绘制几何图形(实例:绘制安卓机器人)

第一步:为帧布局管理器设置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添加到布局管理器中
    }
}

运行结果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章