阅读背景:

Android开发-自定义View-AndroidStudio(二十八)缩放的View

来源:互联网 
觉得博文有用,请点赞,请评论,请关注,谢谢!~
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



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: