MainActivity.java
package com.jsjrjsb1504.sdut.gesture;
import android.content.Context;
import android.graphics.*;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
public class Main2Activity extends AppCompatActivity {
float rationpieceOfWidth = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
FrameLayout mFrameLayout = findViewById(R.id.framelayout);
//将当前的布局和内部类相关联
mFrameLayout.addView(new Myview(this));
}
//内部类用于绘画
public class Myview extends View {
public Myview(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
rationpieceOfWidth = canvas.getWidth();
super.onDraw(canvas);
//创建一支画笔
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
//设置画笔粗细
paint.setStrokeWidth(2);
//设置是否为空心
paint.setStyle(Paint.Style.FILL_AND_STROKE);
//脚丫
paint.setColor(Color.argb(255, 180, 130, 34));
RectF mRectF_leg = new RectF(
rationpieceOfWidth / 8 + rationpieceOfWidth / 20,
rationpieceOfWidth - rationpieceOfWidth / 10,
rationpieceOfWidth / 2 - rationpieceOfWidth / 20,
rationpieceOfWidth + rationpieceOfWidth / 20);
canvas.drawOval(mRectF_leg, paint);
mRectF_leg.offset(rationpieceOfWidth * 3 / 8, 0);
canvas.drawOval(mRectF_leg, paint);
// //绘制肚子
paint.setColor(Color.BLACK);
RectF mRectF_belly = new RectF(
rationpieceOfWidth * 3 / 24,
rationpieceOfWidth / 3,
rationpieceOfWidth * 9 / 12 + rationpieceOfWidth * 3 / 24,
rationpieceOfWidth);
canvas.drawOval(mRectF_belly, paint);
//绘制头部
paint.setColor(Color.BLACK);
RectF mRectF_head = new RectF(rationpieceOfWidth / 6,
rationpieceOfWidth / 8,
rationpieceOfWidth / 6 + rationpieceOfWidth * 2 / 3,
rationpieceOfWidth * 5 / 6);
canvas.drawOval(mRectF_head, paint);
// canvas.drawArc(mRectF_head, 150, 250, true, paint); //顺时针旋转
paint.setColor(Color.WHITE);
//胳膊
paint.setColor(Color.WHITE);
RectF eyes = new RectF(rationpieceOfWidth * 37 / 96,
rationpieceOfWidth / 4,
rationpieceOfWidth * 45 / 96, rationpieceOfWidth / 4 + rationpieceOfWidth / 10);
canvas.drawOval(eyes, paint);
eyes.offset(rationpieceOfWidth / 6, 0);
canvas.drawOval(eyes, paint);
paint.setColor(Color.BLACK);
RectF mRectF_eyes = new RectF(
rationpieceOfWidth * 37 / 96 + rationpieceOfWidth / 25,
rationpieceOfWidth / 4 + rationpieceOfWidth / 30,
rationpieceOfWidth * 37 / 96 + rationpieceOfWidth / 13,
rationpieceOfWidth / 4 + rationpieceOfWidth / 12);
canvas.drawOval(mRectF_eyes, paint);
mRectF_eyes.offset(rationpieceOfWidth / 6, 0);
RectF mRectF_rightEyes = new RectF(mRectF_eyes);
mRectF_rightEyes.set(mRectF_eyes.left - rationpieceOfWidth / 50, mRectF_eyes.top, mRectF_eyes.right - rationpieceOfWidth / 50, mRectF_eyes.bottom);
canvas.drawArc(mRectF_rightEyes, 120, 300, true, paint); //顺时针旋转
//嘴巴
paint.setColor(Color.argb(255, 180, 130, 34));
RectF mRectF_mouth = new RectF(
rationpieceOfWidth / 3,
rationpieceOfWidth / 2 - rationpieceOfWidth / 10,
rationpieceOfWidth / 2 + rationpieceOfWidth / 6,
rationpieceOfWidth / 2);
canvas.drawOval(mRectF_mouth, paint);
//肚皮
paint.setColor(Color.WHITE);
RectF mRectF_abdomen = new RectF(
rationpieceOfWidth * 5 / 24,
rationpieceOfWidth * 7 / 12,
rationpieceOfWidth * 7 / 12 + rationpieceOfWidth * 5 / 24,
rationpieceOfWidth - rationpieceOfWidth / 20
);
canvas.drawOval(mRectF_abdomen, paint);
//围脖
RectF mRectF_neck = new RectF();
//胳膊
canvas.save();
paint = new Paint(Color.BLACK);
canvas.translate(rationpieceOfWidth * 7 / 8, rationpieceOfWidth / 2);
RectF mRectF_rightArm = new RectF();
mRectF_rightArm.set(0, 0,
rationpieceOfWidth / 2 - rationpieceOfWidth / 6,
rationpieceOfWidth / 10);
canvas.rotate(60);
canvas.drawOval(mRectF_rightArm, paint);
canvas.restore();
canvas.save();
paint.setColor(Color.BLACK);
canvas.translate(rationpieceOfWidth / 8+rationpieceOfWidth/10, rationpieceOfWidth / 2+rationpieceOfWidth/20); //回到最开始的左上角
// mRectF_rightArm.offset(-rationpieceOfWidth*3/2/4, (float) (rationpieceOfWidth*3/2/4*Math.sqrt(3)));
canvas.rotate(120);
canvas.drawOval(mRectF_rightArm, paint);
// canvas.translate(rationpieceOfWidth, rationpieceOfWidth / 2);
// RectF mRectF_arm = new RectF(rationpieceOfWidth / 2, 0,
// rationpieceOfWidth / 2 - rationpieceOfWidth / 6,
// rationpieceOfWidth / 10);
//
// mRectF_arm.set(mRectF_arm.right - rationpieceOfWidth / 4, mRectF_arm.top, mRectF_arm.right, mRectF_arm.bottom);
// canvas.drawOval(mRectF_arm, paint);
canvas.restore();
}
}
}