android 进阶自定义view (第一天)

       自定义控件是Android系统中一个非常重要的特性,通过自定义控件可以使生硬的界面变得生动活泼。每个应用或多或少都会有几个乃至几十个自定义控件。小编也是深受其害,遇到简单的需求,通过网上找找相关代码,修修改改还能满足,遇到苛刻的老板,完全没有办法,经历过两次的毒打,小编狠下心来,坚持学习,为了以后不再为了自定义而感到怀疑人生。今天是小编学习的第一天,以后会努力坚持一天发布一篇,从0到1。加油!

         基本图形的绘制

                我们平时画图的时候需要的两个工具,是纸和笔。那么,在Android中,Paint类就是画笔,Canvas类就是纸,在这里叫  做画布。所以,凡是跟画笔设置相关的,比如画笔大小、粗细、画笔颜色、透明度、字体的样式等,都在Paint类里设置:同样,凡是画出成品的东西,比如图形、矩形、文字等,都要调用Canvas类里的函数生成。

              下面通过一个自定义控件的例子来学习一下,以及了解Paint和Canvas类的用法。

               一般自定义View有一个构造方法:

android 进阶自定义view (第一天)

          重写onDraw(Canvas canvas)。可以看到,在该函数中,入参是一个Canvas对象,也就是当前控件的画布,所以只要调用Canvas的绘图函数,效果就可以直接显示在控件上

android 进阶自定义view (第一天)

 完整的代码如下:

android 进阶自定义view (第一天)

 运行效果:

android 进阶自定义view (第一天)

         从这里看到,只需要先创建一个派生自View的类,再重新在onDraw()函数中设置Paint并调用Canvas的一些绘图函数,就可以画出我们想要的图形。由此看来,自定义控件并不复杂。下面来看下如何设置画笔。

        画笔的基本设置

             1.setColor

void setColor(int color) 

           一种颜色是由红、绿、蓝三种颜色合成出来的,所以color只能取8位的0xAARRGGBB样式的颜色。

          其中:

   A  代表透明度(Alpha),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,透明度越高,图像也就越透明。当取     0时,图像完全不可见。

   R  代表红色值(Red),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,红色越少。当取0时,表示红色完全不       可见;当取255时,红色完全显示。

   G  代表绿色值(Green),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,绿色越少。当取0时,表示绿色完         全不可见;当取255时,绿色完全显示。

   B  代表蓝色值(Blue),取值范围是0~255(对应十六进制数0x00~0xFF),取值越小,蓝色越少。当取0时,表示蓝色完全不     可见;当取255时,蓝色完全显示。
      比如0xFFFF0000就表示大红色。因为透明度是255,表示完全不透明,红色取全量值255,其他色值全取0,表示颜色中只有红色;当然,如果我们不需要那么红,则可以适当减少红色值,比如0xFFFFFF00就会显示弱红色。

其实,出手动组合颜色的方法以外,系统还提供了一个专门用来解析颜色的类--Color(有关Color类的使用,后期再进行学习)

下面绘制一大一小两个圆,并将这两个圆叠加起来,上方的圆半透明,代码如下:

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
paint.setStyle(Paint.Style.FILL);
paint.setStrokeWidth(50);
canvas.drawCircle(190,200,150,paint);

paint.setColor(0x7EFFFF00);
canvas.drawCircle(190,200,100,paint);

这里绘制了两个圆,第一个圆的颜色值是0xFFFF0000,即不透明的红色,半径取150px;第二个圆的颜色值是0xEFFFF00,即半透明的黄色,半径取100px。效果如下图所示。

android 进阶自定义view (第一天)

2.setStyle

void setStyle(Style style)
该函数用于设置填充样式,对于文字和几何图形都有效。style的取值如下:

Paint.Style.FILL:仅填充内部。Paint.Style.FILL_AND_STROKE:填充内部和描边。Paint.Style.STROKE:仅描边。
设置填充内部及描边的样式代码如下:

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
paint.setStyle(Paint.Style.FILL);
paint.setStrokeWidth(50);
canvas.drawCircle(190,200,150,paint);

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeWidth(50);
canvas.drawCircle(190,200,150,paint);

Paint paint = new Paint();
paint.setColor(0xFFFF0000);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(50);
canvas.drawCircle(190,200,150,paint);

各自效果图如下:

android 进阶自定义view (第一天)  android 进阶自定义view (第一天)  android 进阶自定义view (第一天)

明显可见,FILL_AND_STROKE是FILL和STROKE叠加在一起显示的结果,FILL_AND_STROKE比FILL多了一个描边的宽度。

3. setCrokeWide()

void setStrokeWidth(float width)
用于设置描边宽度 值,单位是px。当画笔的Style样式是STROKE、FILL_AND_STROKE时有效。

 

今天小编就学习到这了,一边学习,一边写文章,还是有点效果,希望每天都能坚持下来。坚持一天一篇。

android 进阶自定义view (第二天)

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

android 进阶自定义view (第一天)

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » android 进阶自定义view (第一天)
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏