Shape

Android 中的 java代码 shape讲解

1.类型

Shape_第1张图片

2.详解

   (1)Shape的详解

            Shape是其他类的基类,可以绘制任何的集合图形,通过自己德尔ondraw()方法。

     

public class  MyView extends View
{

    public MyView(Context context) {
        super(context);

    }
    Shape shape=new Shape() {
        @Override
        public void draw(Canvas canvas, Paint paint) {
           

            canvas.drawCircle(shape.getWidth(),shape.getHeight(),shape.getWidth()/2,paint);
        }
    };
    @Override
    protected void onDraw(Canvas canvas) {

            super.onDraw(canvas);
            Paint paint=new Paint();
 
  
            paint.setColor(Color.BLUE);
            paint.setAntiAlias(true);
            paint.setStrokeWidth(40);
            paint.setStyle(Paint.Style.STROKE);
shape.resize( 800, 800);//设置大小 shape.draw(canvas, paint); }}

            当你创建一个shape对象,要求重写public void draw(Canvas canvas, Paint paint)方法,shape.draw()执行时需要将画布和画笔传入。


   (2)RectShape(矩形)的详解(shape直接子类)

        

public  class  RectView extends View
{
    RectShape rectShape;
    public RectView(Context context) {
        super(context);

        rectShape=new RectShape();
        rectShape.resize(400, 400);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint paint=new Paint();

        paint.setColor(Color.BLUE);
        paint.setStyle(Paint.Style.STROKE);
        rectShape.draw(canvas,paint);

    }
}
 
  
    很简单,只要设定画布,画笔,宽高,即可!
   (3)PathShape(shape的直接子类)
public  class pathView extends View
{
    PathShape pathShape;
    public pathView(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.BLUE);
        Path path1=new Path();
        path1.moveTo(100, 100);
        path1.lineTo(200, 200);
        path1.lineTo(400, 800);
        //path1.close();
        Paint paint=new Paint();
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.FILL);

        pathShape=new PathShape(path1,100,100);
        pathShape.resize(300,300);
        pathShape.draw(canvas,paint);

    }
}
1.必须要调用 pathShape.resize( 300, 300)方法,否则无法显示。
 
  
2.pathShape=new PathShape(path1,stdwidth,stdheight);这个里边的宽高为标准宽高。
  以后通过pathShape.resize(width,height)来修改宽高,
  宽为:canvas.scale(width/stdwidth)
  高为:canvas.scale(height/stdheight)

 
  

   (3)ArcShape的详解shape直接子类

public  class ArcView extends View
{

    public ArcView(Context context) {
        super(context);
    }


    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        ArcShape arcShape=new ArcShape(0,-90);
        arcShape.resize(500,800);
        Paint paint=new Paint();
        paint.setColor(Color.BLACK);
        paint.setStyle(Paint.Style.FILL);

        arcShape.draw(canvas,paint);

    }
}
1.必须制定尺寸 arcShape.resize(500,800);

2.以制定的尺寸所形成的集合图形的中心进行扇形截图


   (4)OvalShape(圆形或者椭圆)shape直接子类

public  class OvalView extends View
{

    public OvalView(Context context) {
        super(context);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        OvalShape ovalShape=new OvalShape();
        ovalShape.resize(500,800);
        Paint paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.FILL);
        ovalShape.draw(canvas,paint);
    }
}

1.必须制定尺寸 arcShape.resize(500,800);

2.以制定的尺寸所形成的集合图形的中心进行绘制圆形或者椭圆

(5)RoundRectShape(圆角矩形)

public class  roundView extends View
{

    public roundView(Context context) {
        super(context);
    }
    RectF r=new RectF(100,100,300,100);
    float jiao[]={20,20,20,20,20,20,20,20};
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        RoundRectShape roundRectShape=new RoundRectShape(jiao,r,jiao);
        roundRectShape.resize(800,800);
        Paint paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Paint.Style.STROKE);
        roundRectShape.draw(canvas,paint);
    }
}

1.构造函数中的第一个函数 圆角的度数,前两个为左上角,在两个为右上角,在两个为右下角,在两个为左下角


2.第二个参数为,RectF(),他会把这个矩形套在外边矩形内部。注意:

RectF(100,100,300,100)的四个参数是距离外部矩形的边的长度

3.第三个参数为内部矩形的圆角,如果第二个参数为空,第三个参数直接被忽略、



你可能感兴趣的:(activity基础)