当前位置: 首页 > news >正文

网站规划包括哪些内容杭州自助建站模板

网站规划包括哪些内容,杭州自助建站模板,开发微信小程序收费,wordpress 无法新建页面简单理解 Android中的View类代表用户界面中基本的构建块。一个View在屏幕中占据一个矩形区域、并且负责绘制和事件处理。View是所有widgets的基础类#xff0c;widgets是我们通常用于创建和用户交互的组件#xff0c;比如按钮、文本输入框等等。子类ViewGroup是所有布局widgets是我们通常用于创建和用户交互的组件比如按钮、文本输入框等等。子类ViewGroup是所有布局layout的基础类。layout是一个不看见的容器里面堆放着其他的view或者ViewGroup并且设置他们的布局属性。 所有的view在窗口中是以树状结构来管理。你可以通过代码或者编辑xml布局文件来添加一个view。view有很多的子类来负责控制或者有能力展示图片文字等。 Android绘制View 当一个Activity启动时会被要求绘制出它的布局。Android框架会处理这个请求当然前提是Activity提供了合理的布局。绘制从根视图开始从上至下遍历整棵视图树每一个ViewGroup负责让自己的子View被绘制每一个View负责绘制自己通过draw()方法.绘制过程分三步走。 MeasureLayoutDraw 整个绘制流程是在ViewRoot中的performTraversals()方法展开的。部分源代码如下。 private void performTraversals() {......//最外层的根视图的widthMeasureSpec和heightMeasureSpec由来//lp.width和lp.height在创建ViewGroup实例时等于MATCH_PARENTint childWidthMeasureSpec getRootMeasureSpec(mWidth, lp.width);int childHeightMeasureSpec getRootMeasureSpec(mHeight, lp.height);......mView.measure(childWidthMeasureSpec, childHeightMeasureSpec);......mView.layout(0, 0, mView.getMeasuredWidth(), mView.getMeasuredHeight());......mView.draw(canvas);...... }在绘制之前当然要知道view的尺寸和绘制。所以先进行measu和layout测量和定位如下图。 Measure过程 public final void measure(int widthMeasureSpec, int heightMeasureSpec) { //.... ​//回调onMeasure()方法 onMeasure(widthMeasureSpec, heightMeasureSpec); ​//more }计算view的实际大小获得高宽存入mMeasuredHeight和mMeasureWidthmeasure(int, int)传入的两个参数。MeasureSpec是一个32位int值高2位为测量的模式低30位为测量的大小。测量的模式可以分为以下三种。 EXACTLY 精确值模式当layout_width或layout_height指定为具体数值或者为match_parent时系统使用EXACTLY。 AT_MOST 最大值模式指定为wrap_content时控件的尺寸不能超过父控件允许的最大尺寸。 UNSPECIFIED 不指定测量模式View想多大就多大一般不太使用。 根据上面的源码可知measure方法不可被重写自定义时需要重写的是onMeasure方法 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {setMeasuredDimension(getDefaultSize(getSuggestedMinimumWidth(), widthMeasureSpec),getDefaultSize(getSuggestedMinimumHeight(), heightMeasureSpec));}查看源码可知最终的高宽是调用setMeasuredDimension()设定的,如果不重写默认是直接调用getDefaultSize获取尺寸的。 使用View的getMeasuredWidth()和getMeasuredHeight()方法来获取View测量的宽高必须保证这两个方法在onMeasure流程之后被调用才能返回有效值。 Layout过程 Layout方法就是用来确定view布局的位置就好像你知道了一件东西的大小以后总要知道位置才能画上去。 mView.layout(0, 0, mView.getMeasuredWidth(), mView.getMeasuredHeight());layout获取四个参数左上右下坐标相对于父视图而言。这里可以看到使用了刚刚测量的宽和高。 public void layout(int l, int t, int r, int b) {int oldL mLeft;int oldT mTop;int oldB mBottom;int oldR mRight;boolean changed setFrame(l, t, r, b);if (changed || (mPrivateFlags LAYOUT_REQUIRED) LAYOUT_REQUIRED) {.....onLayout(changed, l, t, r, b);..... }通过setFrame设置坐标。如果坐标改变过了则重新进行定位。如果是View对象那么onLayout是个空方法。因为定位是由ViewGroup确定的。 当layout结束以后getWidth()与getHeight()才会返回正确的值。 这里出现一个问题getWidth/Height() 和 getMeasuredWidth/Height()有什么区别 getWidth():View在设定好布局后整个View的宽度。getMeasuredWidth():对View上的內容进行测量后得到的View內容占据的宽度 Draw过程 public void draw(Canvas canvas) {....../** Draw traversal performs several drawing steps which must be executed* in the appropriate order:** 1. Draw the background* 2. If necessary, save the canvas layers to prepare for fading* 3. Draw views content* 4. Draw children* 5. If necessary, draw the fading edges and restore layers* 6. Draw decorations (scrollbars for instance)*/ ​// Step 1, draw the background, if needed......if (!dirtyOpaque) {drawBackground(canvas);} ​// skip step 2 5 if possible (common case)...... ​// Step 2, save the canvas layers......if (drawTop) {canvas.saveLayer(left, top, right, top length, null, flags);}...... ​// Step 3, draw the contentif (!dirtyOpaque) onDraw(canvas); ​// Step 4, draw the childrendispatchDraw(canvas); ​// Step 5, draw the fade effect and restore layers......if (drawTop) {matrix.setScale(1, fadeHeight * topFadeStrength);matrix.postTranslate(left, top);fade.setLocalMatrix(matrix);p.setShader(fade);canvas.drawRect(left, top, right, top length, p);}...... ​// Step 6, draw decorations (scrollbars)onDrawScrollBars(canvas);......}重点是第三步调用onDraw方法。其它几步都是绘制一些边边角角的东西比如背景、scrollBar之类的。其中dispatchDraw是用来递归调用子View,如果没有则不需要。本文主要解析了Android view的绘制更深入的学习或者Android开发进阶可以前往《Android核心架构笔记》查看详细的学习类目。 总结 View是Android中可视化UI组件的实体。View的呈现依赖于Activity是Activity所容纳的基本元素。View主要提供了组件绘制和事件处理的方法。View可以分为容器类型和实体类型。容器类型的ViewViewGroup可容纳其它的容器类型View和实体类型View。实体类型的View主要用于用户交互如按钮文本框。
http://www.zqtcl.cn/news/599934/

相关文章:

  • 网站策划书籍推荐高端网站设计制作的
  • 优秀电商设计网站有哪些微博网站可以做兼职吗
  • 网站建设 验证码电子商务网站建设流程图
  • 做内贸什么网站资源比较多岳阳网上房地产
  • 去国外网站开发客户中的contact us 没有邮箱失败营销案例100例
  • 网站怎么做图片动态图片大全靖江 建设局网站
  • 汉子由来 外国人做的网站wordpress微信小程序部署
  • 兰州网站建设最新招聘信息江苏网站建设简介模板
  • 最具口碑的企业网站建设企业做网站的流程
  • wordpress多语言企业网站网页制作工具按其制作方式有几种类型
  • 2019年做网站还有机会吗wordpress 虚拟订阅插件
  • 网站都有后台吗怀柔网站建设
  • phpcms 图片网站免费商城网站建设
  • 网站虚拟主机租用中铁建设门户网登录初始密码
  • 网站哪个公司做的好网站建设与管理指什么软件
  • 提升学历要多少钱seo关键字优化技巧
  • 代理会计公司网站模版哪家培训机构学校好
  • 开江建设局网站怎么做让自己的网站
  • 个人建设网站要钱吗专门用来制作网页的软件是什么
  • 关键词挖掘站网seo点击软件手机
  • 建设局考试通知文件网站推广普通话的手抄报
  • 移动端网站排名海淀区seo引擎优化多少钱
  • 福田网站建设联系电话免费开商城网站吗
  • 网站备案本人承诺备案 网站建设方案书
  • 图片网站模板wordpress首页模板文件
  • 做外国网站怎么买空间网站策划方案ppt
  • 网站建设全网推广小程序外贸网站建设980
  • 具有营销价值好的网站常德农科院网站
  • 网站域名如何起男女直接做的视频上那个网站
  • 免费创建手机网站上海网站设计建设