View的绘制
来源:互联网 发布:数据库原理与应用pdf 编辑:程序博客网 时间:2024/05/13 06:34
当测量好了一个View后,就可以简单地重写onDraw()方法,并在canvas对象上来绘制所需要的图像;
要在Android中绘制相应的图像,就必须在canvas上进行绘制
执行顺序
onSizeChanged()比onDraw()先执行
在onDraw()方法中调用invalidate()方法通知view进行重绘,将再次执行onDraw()方法,不在执行onSizeChanged()方法
或调用postInvalidateDelayde()
<span style="font-size:18px;">private void initView() { Log.e("sssss","initView"); mPaint = new Paint();<span style="color:#ff0000;">//首先设置画笔</span> mPaint.setColor(Color.BLUE); mPaint.setStyle(Paint.Style.FILL); mRectCount = 12; }</span><span style="font-size:18px;"><pre name="code" class="java">@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); Log.e("sssss","onSizeChanged"); mWidth = getWidth(); mRectHeight = getHeight();<span style="color:#ff0000;">//获得显示在屏幕上的高度及宽度</span> mRectWidth = (int) (mWidth * 0.6 / mRectCount); mLinearGradient = new LinearGradient(<span style="color:#ff0000;">//设置渐变</span> 0, 0, mRectWidth, mRectHeight, Color.YELLOW, Color.BLUE, Shader.TileMode.CLAMP); mPaint.setShader(mLinearGradient);<span style="color:#ff0000;">//把特殊效果(渐变)赋给画笔</span> } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Log.e("sssss","onDraw"); for (int i = 0; i < mRectCount; i++) { mRandom = Math.random(); float currentHeight = (float) (mRectHeight * mRandom); canvas.drawRect( (float) (mWidth * 0.4 / 2 + mRectWidth * i + offset), currentHeight, (float) (mWidth * 0.4 / 2 + mRectWidth * (i + 1)), mRectHeight, mPaint); } postInvalidateDelayed(300); }</span>
0 0
- view 的绘制过程
- view的绘制流程
- View 的绘制流程
- View的绘制流程
- View的绘制过程
- View的绘制流程
- View的绘制流程
- 自定义view的绘制
- view的绘制过程
- View的绘制原理
- View的绘制流程
- View的绘制流程
- View的绘制流程
- View的绘制过程
- View的绘制
- view的绘制流程
- View的绘制流程
- View的基本绘制
- Java中的内部类
- 吐槽国内各大公司的漏洞报告平台
- 给织梦DEDECMS系统添加栏目图片
- windows Hook 消息分类
- oracle undo与redo的区别
- View的绘制
- 1013
- Java千百问_08JDK详解(015)_JVMTI提供哪些功能
- eclipse导入项目出现中文乱码解决方案
- Oracle的高水位线介绍
- Java -AOP实现原理-动态代理的实现
- spring+EnCache缓存示例
- 35.静态链接库和动态链接库
- 基于rem的响应式布局