文档章节

自定义view常用方法

jacky_123
 jacky_123
发布于 2015/02/25 20:05
字数 565
阅读 76
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

自定义 View的常用方法: 
onFinishInflate() 当View中所有的子控件 均被映射成xml后触发 
onMeasure(int, int) 确定所有子元素的大小 
onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发 
onSizeChanged(int, int, int, int) 当view的大小发生变化时触发 
onDraw(Canvas) view渲染内容的细节 
onKeyDown(int, KeyEvent) 有按键按下后触发 
onKeyUp(int, KeyEvent) 有按键按下后弹起时触发 
onTrackballEvent(MotionEvent) 轨迹球事件 
onTouchEvent(MotionEvent) 触屏事件 
onFocusChanged(boolean, int, Rect) 当View获取 或失去焦点时触发 
onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发 
onAttachedToWindow() 当view被附着到一个窗口时触发 
onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和  onAttachedToWindow() 是相反的。 
onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发 
  以上是View实现的一些基本接口的回调方法,一般我们需要处理画布的显示时,重写onDraw(Canvas)用的的是最多的: 
view plaincopy to clipboardprint? 
  @Override  
  protected void onDraw(Canvas canvas) {  
    //这里我们直接使用canvas对象处理当前的画布,比如说使用Paint来选择要填充的颜色  
  Paint paintBackground = new Paint();  
  paintBackground.setColor(getResources().getColor(R.color.xxx));  //从Res中找到名为xxx的color颜色定义  
  canvas.drawRect(0, 0, getWidth(), getHeight(), paintBackground); //设置当前画布的背景颜色为paintBackground中定义的颜色,以0,0作为为起点,以当前画布的宽度和高度为重点即整块画布来填充,具体的请查看Android123未来讲到的Canvas和Paint,在Canvas中我们可以实现画路径,图形,区域,线。而Paint作为绘画方式的对象可以设置颜色,大小,甚至字体的类型等等。  
 
当然还有就是处理窗口还原状态问题(一般用于横竖屏切换),除了在Activity中可以调用外,开发游戏时我们尽量在View中使用类似 
view plaincopy to clipboardprint? 
@Override  
  protected Parcelable onSaveInstanceState() {  
      Parcelable p = super.onSaveInstanceState();  
      Bundle bundle = new Bundle();  
      bundle.putInt("x", pX);  
      bundle.putInt("y", pY);  
      bundle.putParcelable("android123_state", p);  
      return bundle;  
  }  
  @Override  
  protected void onRestoreInstanceState(Parcelable state) {   
      Bundle bundle = (Bundle) state;  
      dosomething(bundle.getInt("x"), bundle.getInt("y")); //获取刚才存储的x和y信息  
      super.onRestoreInstanceState(bundle.getParcelable("android123_state"));  
      return;  
  }

jacky_123
粉丝 3
博文 55
码字总数 26297
作品 0
南通
程序员
私信 提问
加载中
请先登录后再评论。
Java类集 List, Set, Map, Stack, Properties基本使用

首先看下继承结构: ArrayList(常用): 1 /** 2 * List接口继承Collection接口 3 * ArrayList, Vector为List接口的实现类 4 * add()添加新元素,remove()删除指定位置元素,get()通过索引获...

osc_zqnsx4hz
2018/10/28
2
0
IOS的UI基础01

内容大纲:(红色表示博主个人重点记忆) 1、指定启动界面 带箭头就是首次启动的页面 2、两个常用的快捷键 3、拖线子控件注意事项 4、一般情况下,UIView的容器是控制器的View。 5、didRecive...

何阳234
2016/03/11
79
1
Android开发 ViewConfiguration View的配置信息类

前言   这个ViewConfiguration是Android 自带View的常量配置类,用于保存了各类View的点击、长按、拖动、滑动等等一些View的配置数据。我们在自定义View的时候可以参考这个类提取对应常量来...

osc_0q2mvgjv
2019/04/09
1
0
Django10-Form组件

一、Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。 与此同时我们在很多场景下都需要对用户的输入做校验,比如校验...

osc_yz2rojzt
2019/04/18
1
0
android开发之自定义View 详解 资料整理 小冰原创整理,原创作品。

前言 一,自定义View: 三,继承控件: 系统重要控件的展示:Viewpager 1,ViewPager的图片的展示 2,描述的联动 3,点的联动 4,无限循环的实现 5,自动播放,动画效果的实现 如:<declare-...

程序员小冰
2016/05/31
6
0

没有更多内容

加载失败,请刷新页面

加载更多

还在用Swagger(丝袜哥)生成接口文档?我推荐你试试它.....

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后...

路人甲Java
07/09
7
0
智能仓储的独角兽逻辑

智能仓储的主要应用市场在哪里?客户的付费意愿和付费能力如何? 1、仓储设备具备标准化和通用化特点 由于电商和新零售的快速发展,轻工业品零售仓库的需求量大幅增加。而中国又是全球轻工业...

logiter
2019/08/23
14
0
可是小腿哪能扭过大腿

父亲是一个特别勤苦的人,他从不睡懒觉,每天天麻麻亮,或是下地干活,或是在家搞副业,或是拿着铁锨、粪筐,到路边,到村子周围,到牲畜常出入的地方,去拾粪蛋子,为庄稼积攒肥料,父亲不仅...

瑾123
21分钟前
12
0
一个volatile跟面试官扯了半个小时

《安琪拉与面试官二三事》系列文章,本文是此系列第三篇 一个HashMap能跟面试官扯上半个小时 一个synchronized跟面试官扯了半个小时 欢迎关注Wx公众号:【安琪拉的博客】—揭秘Java后端技术,...

osc_6ls9vwji
22分钟前
0
0
内网渗透靶机-VulnStack 2

WEB服务器:windows2008系统 外网网卡IP:192.168.1.152 内网网卡IP:10.10.10.80 域成员:windows server 2003系统 网卡IP:10.10.10.200 域控服务器:windows server 2008系统 网卡IP:192...

dnsil
07/10
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部