文档章节

自定义view常用方法

jacky_123
 jacky_123
发布于 2015/02/25 20:05
字数 565
阅读 73
收藏 0
点赞 0
评论 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;  
  }

本文转载自:http://xiaonao880516.iteye.com/blog/1343194

共有 人打赏支持
jacky_123
粉丝 3
博文 55
码字总数 26297
作品 0
南通
程序员
UIViewController视图控制器

1.视图控制器功能概述 分担AppDelegate的工作 实现模块独立,提高复用性 控制视图大小变换、布局视图、响应事件 检测视图的切换 检测以及处理屏幕旋转. 2.UIViewController创建及初始化工作 ...

tuwangsheng
2014/04/27
0
0
Android-自定义View

Android 之自定义 View 的死亡三部曲之 Measure 我还不知道你的三围呢(你要占多少屏幕),我怎么能轻易让你出场呢? Android 自定义 View,ViewGroup(一)的一些原理与细节, 定义 Recycler...

掘金官方
01/03
0
0
android自定义view之自定义属性

这两天在Android中用到了自定义view,在自定义view时也顺便使用了下自定义属性。自定义属性以前只是耳闻 未曾谋面,这次借机会对自定义属性进行了一番学习,顺便总结了一下自定义属性的使用。...

紫葡萄0
2017/03/08
0
0
Android学习笔记09:Paint及Canvas的简单应用

Android学习笔记09:Paint及Canvas的简单应用   在Android中需要通过graphics类来显示2D图形。   graphics中包括了Canvas(画布)、Paint(画笔)、Color(颜色)、Bitmap(图像)等常用...

Carl_
2015/01/07
0
0
Android View学习示例

View,是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展。 在游戏开发中叶可以自定义视图(View),这个画布的功能更能满足...

长平狐
2013/01/06
44
0
Android View学习示例

View,是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展。 在游戏开发中叶可以自定义视图(View),这个画布的功能更能满足...

鉴客
2012/03/09
72
0
Android之View学习示例

View,是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展。 在游戏开发中叶可以自定义视图(View),这个画布的功能更能满足...

晨曦之光
2012/03/01
625
0
jeissie/JesseOAF

欢迎使用Jesse Open Assist Frame ####JOAF是一个Android的轻量级辅助应用开发框架,把自己日常反复使用的东西精炼出来,欢迎讨论反馈。 集中工具 :将日常开发中常用的系统的繁琐方法进行了...

jeissie
2014/11/04
0
0
仿夸克浏览器底部工具栏

夸克浏览器是我非常喜欢的一款浏览器,整体非常简洁,UI做的也很精致。今天我就来仿写下其中的底部工具栏。先来看看原本的效果: 本身就是一个弹框,特别之处就是可以收缩伸展布局,再来看看...

大头呆
2017/12/08
0
0
炫酷的环形调节器控件 : RegulatorView

又画了一个圆,但这次这个带了个触摸,由于最近在搞智能家居类应用,所以可想而知有很多东西需要自定义如遥控器,调节器,还有一些带动画效果的View,毕竟叫智能产品嘛,不能就是开和关两个选...

mochixuan
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Confluence 6 配置时间和日期格式

你可以修改你 Confluence 为用户显示的时期和时间格式。设置的句法使用的是 SimpleDateFormat class,请参考 Java SimpleDateFormat 文档中的内容来设置日期和时间格式。 有下面 3 个时间和日...

honeymose
9分钟前
0
0
php seralize unserialize

关于PHP 序列化(serialize)和反序列化(unserialize)出现错误(Error at offset)的解决办法。 首先我们分析一下为什么会出现这个错误: 编码问题 UTF-8: ANSI: 我发现在我的机器上边编码改...

yeahlife
15分钟前
0
0
七、JSP九大内置对象和四个作用域

九大内置对象: request:类型是HttpServletRequest,和Servlet里的HttpServletRequest一模一样。 response:类型是HttpServletResponse,和Servlet里的HttpServletResponse一模一样。JSP里基...

Wakeeee_
18分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
51分钟前
0
0
双向认证-nginx

1、设置容器 docker run -it --name nginx-test2 -v /home/nginx:/apps -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro -p 8183:80 -p 7443:443 -d nginx:stable 2、修改nginx配......

hotsmile
51分钟前
0
0
深入了解 Java 自动内存管理机制及性能优化

一图带你看完本文 一、运行时数据区域 首先来看看Java虚拟机所管理的内存包括哪些区域,就像我们要了解一个房子,我们得先知道这个房子大体构造。根据《Java虚拟机规范(Java SE 7 版)》的规...

Java大蜗牛
53分钟前
4
0
SpringBoot | 第六章:常用注解介绍及简单使用

前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志 配置等。这章节开始,开始总结一些关于springboot的综合开发的知识点。由于SpringBoot本身是基于Spring和SpringMvc...

oKong
54分钟前
9
0
云数据库架构演进与实践

如今,大型企业如金融企业和银行等,在下一代的微服务架构转型要求下,需要基础软件和数据平台能够实现原生的云化,以满足微服务架构的需求。 微服务,也就是一种面向服务的,有特定边界的松...

巨杉数据库
55分钟前
0
0
Linux系统梳理---系统搭建(一):jdk卸载与安装

1.去官网下载符合Linux版本的jdk,暂用jdk-8u171-linux-x64.rpm 2.登陆Linux,进入usr目录,创建java目录(方便管理,可以其他位置):mkdir java 3.上传下载的jdk包至Linux服务器,使用rz指令(sz f...

勤奋的蚂蚁
今天
0
0
Linux Kernel 4.16 系列停止维护,用户应升级至 4.17

知名 Linux 内核维护人员兼开发人员 Greg Kroah-Hartman 近日在发布 4.16.18 版本的同时,宣布这是 4.16 系列的最后一个维护版本,强烈建议用户立即升级至 4.17 系列。 Linux 4.16 于 2018 年...

六库科技
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部