android 关于view的绘制

来源:互联网 发布:mac升级后能退回吗 编辑:程序博客网 时间:2024/06/11 03:11

 

        关于android 自定义view的绘制,学习将近一周了。我学习知识有个特点,就是先要了解大体的知识架构才能深入专研细节,这样的学习代价是很大的,耗时间,学习成本也很高,效率也很低,以至于到昨天我才真正学习了一个具体的知识点。

         先总结一下总体的思路架子。view自带的方法有很多,我们要实现自定义的view,一般情况要重写onMeasure,onLayout,onDraw。分别是测量,布局,绘制。还有自定义的参数设置Typearray。掌握这四种基本掌握了自定义view的入门基础本事。之后还要涉及动画,视图(view)动画(在onDraw内就可以完成),属性动画ObjectAnimator动画,帧动画。

   现在记录一些昨天写的代码段及理解,其实自己都没怎么懂。

    //设置画笔    paint = new TextPaint();    paint.setColor(getResources().getColor(R.color.colorAccent));    paint.setAntiAlias(true);    paint.setStyle(Paint.Style.STROKE);    paint.setFlags(Paint.ANTI_ALIAS_FLAG);//设置为抗锯齿    paint.setStrokeCap(Paint.Cap.ROUND);    paint.setStrokeWidth(3 * density);    //获取屏幕宽长度    int witch = canvas.getWidth();    int hight = canvas.getHeight();    或者是    float sw = this.getMeasuredWidth();    float sh = this.getMeasuredHigth();    //开始设置画布    //HSpace(横线宽度)和space是横线间距,自己设置    if (startX >=  0 ) {            startX =-(hSpace + space);        } else {            startX += delta;        }        float start = startX;        // draw latter parse        while (start < sw) {            canvas.drawLine(start, 105, start + hSpace,105, paint);            start += (hSpace + space);        }    //刷新     invalidate();
关键的代码思路是选择一个起始点startX做判断,startX是自增长的,或者自减少。然后将他赋值给绘制的第一轮start,使用while判断的绘制一轮,然后刷新重新进入startx判断,使其变化后在赋值到start,用while进入第二轮,就这样下去,一直在进行绘制,是画面达到动态效果。如果去掉startX这个参数,只是使用start,使用while绘制一轮,那么显示的就是一个静态的画面。



原创粉丝点击