android 关于view的绘制

 

        关于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绘制一轮,那么显示的就是一个静态的画面。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值