package com.iwanghang.mannequindemo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.View;public class MannequinView extends View { private int x = 0; private int y = 0; private float z = 1; public MannequinView(Context context, AttributeSet attrs) { super(context, attrs); } public MannequinView(MainActivity mainActivity) { super(mainActivity); } // 当Android系统需要绘制一个View对象时,就会调用该对象的onDraw @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.GRAY); paint.setStrokeWidth((float) 3.0); // 线宽 paint.setAntiAlias(true); // 抗锯齿 //canvas.drawLine(0,0,200,200,paint); String[] pointArray; // 头 第一条线 String point1 = "523,169"; String point2 = "540,157"; String point3 = "562,152"; String point4 = "584,158"; String point5 = "600,171"; pointArray = new String[]{ point1, point2, point3, point4, point5 }; drawMyLines(pointArray,canvas,paint); // 头 第二条线 String point6 = "512,187"; String point7 = "523,169"; String point8 = "540,162"; String point9 = "562,158"; String point10 = "584,162"; String point11 = "600,171"; String point12 = "611,187"; pointArray = new String[]{ point6, point7, point8, point9, point10, point11, point12 }; drawMyLines(pointArray,canvas,paint); // 头 第三条横线 String point13 = "509,207"; String point14 = "509,193"; String point15 = "512,187"; String point16 = "520,181"; String point17 = "538,174"; String point18 = "562,171"; String point19 = "586,174"; String point20 = "603,181"; String point21 = "611,187"; String point22 = "613,192"; String point23 = "615,211"; pointArray = new String[]{ point13, point14, point15, point16, point17, point18, point19, point20, point21, point22, point23 }; drawMyLines(pointArray,canvas,paint); // 头 第四条横线 String point24 = "509,248"; String point25 = "506,210"; String point26 = "518,199"; String point27 = "535,192"; String point28 = "561,190"; String point29 = "589,192"; String point30 = "607,200"; String point301 = "615,211"; String point31 = "618,216"; String point32 = "615,239"; pointArray = new String[]{ point24, point25, point26, point27, point28, point29, point30, point301, point31, point32 }; drawMyLines(pointArray,canvas,paint); // 头 第五条横线 String point33 = "514,261"; String point34 = "509,248"; String point35 = "510,229"; String point36 = "518,221"; String point37 = "535,214"; String point38 = "562,213"; String point39 = "589,214"; String point40 = "605,220"; String point41 = "613,228"; String point42 = "615,239"; String point43 = "609,262"; pointArray = new String[]{ point33, point34, point35, point36, point37, point38, point39, point40, point41, point42, point43 }; drawMyLines(pointArray,canvas,paint); // 头 第六条横线 String point44 = "525,292"; String point45 = "514,261"; String point46 = "523,249"; String point47 = "539,246"; String point48 = "562,246"; String point49 = "585,246"; String point50 = "600,249"; String point51 = "609,262"; String point52 = "599,293"; pointArray = new String[]{ point44, point45, point46, point47, point48, point49, point50, point51, point52 }; drawMyLines(pointArray,canvas,paint); // 头 第七条横线 - 起点终点与第一条线相同 String point53 = "523,169"; String point54 = "521,181"; String point55 = "518,199"; String point56 = "518,221"; String point57 = "523,249"; String point58 = "533,274"; String point59 = "562,287"; String point60 = "592,274"; String point61 = "600,249"; String point62 = "606,221"; String point63 = "607,200"; String point64 = "603,180"; String point65 = "600,171"; pointArray = new String[]{ point53, point54, point55, point56, point57, point58, point59, point60, point61, point62, point63, point64, point65 }; drawMyLines(pointArray,canvas,paint); // 头 第八条横线 - 起点终点与第三条线相同 String point66 = "509,207"; String point67 = "510,229"; String point68 = "517,257"; String point69 = "529,283"; String point70 = "545,295"; String point71 = "562,299"; String point72 = "580,295"; String point73 = "594,283"; String point74 = "607,257"; String point75 = "613,228"; String point76 = "615,211"; pointArray = new String[]{ point66, point67, point68, point69, point70, point71, point72, point73, point74, point75, point76 }; drawMyLines(pointArray,canvas,paint); // 头 第九条横线 - 起点终点与第六条线相同 String point77 = "525,292"; String point78 = "545,306"; String point79 = "562,309"; String point80 = "580,306"; String point81 = "599,293"; pointArray = new String[]{ point77, point78, point79, point80, point81 }; drawMyLines(pointArray,canvas,paint); // 头 第10条横线 - 第七条的点6 第六条的起点 String point82 = "533,274"; String point83 = "525,292"; pointArray = new String[]{ point82, point83 }; drawMyLines(pointArray,canvas,paint); // 头 第11条横线 - 第七条的点8 第八条的点8 第六条的终点 String point84 = "592,274"; String point85 = "594,283"; String point86 = "599,293"; pointArray = new String[]{ point84, point85, point86 }; drawMyLines(pointArray,canvas,paint); super.onDraw(canvas); } private void drawMyLines(String[] pointArray, Canvas canvas, Paint paint) { for(int i=0;i<pointArray.length;i++){ if (i+1<pointArray.length){ drawMyLine(pointArray[i],pointArray[i+1],canvas,paint); } } } private void drawMyLine(String point1, String point2, Canvas canvas, Paint paint) { String[] point = (point1 + "," + point2).split(",");// canvas.drawLine(// x + Float.valueOf(point[0]),// y + Float.valueOf(point[1]),// x + Float.valueOf(point[2]),// y + Float.valueOf(point[3]),paint); Log.v("ceshi", String.valueOf((y + Float.valueOf(point[1])) * z) + " ---" + z); if (z > 1.0){ Log.v("ceshi", "z > 1.0"); canvas.drawLine( (x + Float.valueOf(point[0])) * z - (z - 1) * 523, (y + Float.valueOf(point[1])) * z - (z - 1) * 169, (x + Float.valueOf(point[2])) * z - (z - 1) * 523, (y + Float.valueOf(point[3])) * z - (z - 1) * 169, paint); }else { canvas.drawLine( (x + Float.valueOf(point[0])) * z, (y + Float.valueOf(point[1])) * z, (x + Float.valueOf(point[2])) * z, (y + Float.valueOf(point[3])) * z,paint); } } // 移动 public void setXY(int x1, int y1) { x = x1; y = y1; invalidate(); // onDraw() } // 缩放 public void setZone(float z1) { z = z1; invalidate(); // onDraw() }}package com.iwanghang.mann