android经验总结

cavas方法汇总

2019-03-24  本文已影响1人  next_discover

paint:

setcolor
setstyle
setstroke
setstokewith

cavas:

drawcolor//画布背景
drawARGB
drawRGB

drawLine//画线
drawLines//画多条线

drawPoint//画点
drawPoints//多个点

drawRect//画矩形
drawRoundRect//画圆角矩形

drawCircle//画圆

drawOval//画椭圆

drawArc//画圆弧

//画路径
drawPath(path,paint)



Rect RectF矩形

contains//判断是否包含某个点在内

//判断代码块设置矩形的不同颜色
@Override
   protected void onDraw(Canvas canvas) {
       super.onDraw(canvas);

       Paint paint = new Paint();
       paint.setColor(Color.GREEN);
       paint.setAntiAlias(true);//抗锯齿
       paint.setStyle(Paint.Style.STROKE);
       paint.setStrokeWidth(10);  
       RectF rectf_round = new RectF(500,400,1000,700);
       if(rectf_round.contains(eventX,eventY)){
           paint.setColor(Color.RED);
       }else{
           paint.setColor(Color.GREEN);
       }
       canvas.drawRoundRect(rectf_round,50,50,paint);
}

@Override
   public boolean onTouchEvent(MotionEvent event) {
       eventX = event.getX();
       eventY = event.getY();
       if(event.getAction() == MotionEvent.ACTION_DOWN){
           invalidate();
           return true;
       }else if(event.getAction() == MotionEvent.ACTION_UP){

           eventX = -1;
           eventY = -1;
       }
       postInvalidate();
       return super.onTouchEvent(event);
   }



intersects//判断两个矩形是否相交(不会返回相交部分的矩形)
intersect //判断两个矩形是否相交并且还会返回相交部分的矩形


union//合并矩形  rectf_1.union(rectf_2);  canvas.drawRect(rectf_1,paint);

注意:invalidate();运行在主线程,postInvalidate();运行在任何线程

path


//画直线
moveTo  //直线路径
lineTo //第一段的终点,第二段的起点
colse()//闭环

//画弧线
path.arcTo()

addArc()//增加弧度路径
addRect//增加矩形路径
addRoundRect//增加圆弧矩形路径
addcircle  //添加圆形路径
setFillType //设置填充模式

Path.Direction.CCW //逆时针方向的矩形路径
Path.Direction.CW //顺时针方向的矩形路径

//path的填充模式
FillType.Winding:  默认值,当两个图形相交时,取相交部分显示
FillType.eve_odd:  取path所在并不相交的区域
FillType.inverse_winding:  取path的外部区域
FillType.inverse_even_odd:  取path的外部和相交区域


reset //重置路径
rewind //会清除FillType及所有路径,但是二者也有区别
reset()//会重置所有,但是不会清除FillType

上一篇 下一篇

猜你喜欢

热点阅读