自定义控件要用到的知识

  1.Color(颜色)类

  Android系统中颜色的常用表示方法有以下3种:

  (1)int color = Color.BLUE;

  (2)int color = Color.argb(150,200,0,100);

  (3)在xml文件中定义颜色;

  在实际应用当中,我们常用的颜色有以下一些,其颜色常量及其表示的颜色如下所示:

  Color.BLACK      黑色                                       Color.GREEN                  绿色

  Color.BLUE        蓝色                                       Color.LTGRAY                浅灰色

  Color.CYAN       青绿色                                     Color.MAGENTA              红紫色

  Color.DKGRAY    灰黑色                                    Color.RED                      红色

  Color.YELLOW    黄色                                       Color.TRANSPARENT       透明

  Color.GRAY        灰色                                       Color.WHITE                  白色

   2.Paint(画笔)类

   要绘制图形,首先得调整画笔,按照自己的开发需要设置画笔的相关属性。Pain类的常用属性设置方法如下:

  setAntiAlias();              //设置画笔的锯齿效果

  setColor();                   //设置画笔的颜色

  setARGB();                  //设置画笔的A、R、G、B值

  setAlpha();                   //设置画笔的透明度

  setTextSize();               //设置字体的尺寸

  setStyle();                    //设置画笔的风格(空心或实心)

  setStrokeWidth();        //当画笔样式为STROKE或FILL_OR_STROKE时(空心样式时),设置笔刷的粗细度。

  getColor();                   //获取画笔的颜色

       setDither();                  //设定是否启用图像抖动处理,使绘制出来的图像更加饱满平滑清晰

       setMaskFilter();           //设置滤镜效果

       setShadowLayer(float radius, float dx, float dy, int shadowColor);    //设置阴影,radius表示阴影的扩散半径;dx和dy表示阴影平面上的偏移值;shadowColor就不说了阴影颜色。   

       setStrokeCap();          //设置画笔的笔触风格 ,比如:ROUND,SQUARE和BUTT

       setStrokeJoin();          //用于设置接合处的形态,比如一条线其实是由无数条小线拼接成的,拼接处的形状就由该方法指定。可选参数是:BEVEL,MITER,ROUND。

       setTextSkewX();         //设置斜体文字

       setTypeface();            //设置Typeface对象,即字体风格,包括粗体,斜体以及衬线体,非衬线体等

       setUnderlineText();    //设置带有下划线的文字效果

       setStrikeThruText();   //设置带有删除线的效果  

  3.Canvas(画布)类

  画笔属性设置好之后,还需要将图像绘制到画布上。Canvas类可以用来实现各种图形的绘制工作,如绘制直线、矩形、圆等等。Canvas绘制常用图形的方法如下:

  绘制直线:canvas.drawLine(float startX, float startY, float stopX, float stopY, Paint paint);

  绘制矩形:canvas.drawRect(float left, float top, float right, float bottom, Paint paint);

  绘制圆形:canvas.drawCircle(float cx, float cy, float radius, Paint paint);

  绘制字符:canvas.drawText(String text, float x, float y, Paint paint);

       绘制圆点:drawPoint(float x, float y, Paint paint);

       绘制图形:canvas.drawBitmap(Bitmap bitmap,Rect, Rect,Paint paint);

                          参数一就是我们常规的Bitmap对象,

                          参数二是源区域代表要绘制的bitmap 区域

                          参数三是目标区域,代表将要把bitmap绘制在屏幕的那个地方

                          参数四是Paint画刷对象,因为用到了缩放和拉伸的可能,当原始Rect不等于目标Rect时性能将会有大幅损失。

       绘制弧形:drawArc(RectF oval, float startAngle, float sweepAngle, boolean useCenter, Paint paint);

                        参数一是RectF对象,一个矩形区域椭圆形的界限用于定义在形状、大小、电弧,

                        参数二是起始角(度)在电弧的开始,

                        参数三扫描角(度)开始顺时针测量的,

                        参数四是如果这是真的话,包括椭圆中心的电弧,并关闭它,如果它是假这将是一个弧线,

                        参数五是Paint对象;

       4.自定义View的基本实现方法

  首先,我们需要自定义一个类,比如MyView,继承于View类。然后,我们如果有需要自定义一些属性的话,则要在values下创建一个attrs.xml,在里面定义我们的自定义控件的自定义属性。然后,回到MyView中,重写构造方法,加载自定义属性。然后,重写类中的onMeasure()用于测量控件的宽高。然后,重写类中的onDraw()函数。最后,在onDraw()函数中使用Paint和Canvas对象绘制我们需要的图形。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值