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

Android游戏开发之旅View类详解自定义View的常用方法:onFinishInflate







Android游戏开发之旅View类详解自定义View的常用方法:onFinishInflate(

提问者: star2046      发布时间:2014-06-25      浏览:294      回复:0      悬赏:0.0希赛币
2016上半年软考辅导培训,火热招生中!网络直播+课程录播+在线答疑+真题模拟
Android游戏开发之旅 View类详解

  自定义 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; 
}

  出自: doc-view-5324.html


http://www.xdnf.cn/news/11192.html

相关文章:

  • JDK6 新特性
  • micro SD(TF)卡详解
  • pure virtual function call--虚函数调用的错误
  • MPP文件怎么打开?五种方法总有最合适!
  • 搭建免费的ftp服务器
  • 别人总结的英语网站大全
  • uploadify 火狐 php,ThinkPHP 解决使用uploadify 在Firefox浏览器上传图片出现HTTP 500报错...
  • C++使用CriticalSection前需要先初始化
  • ResultSetMetaData用法介绍
  • mysql2005中文版_SQL Server 2005 sp4 简体中文完整免费版下载
  • 去AV片马赛克,开发者被抓了
  • 轻论坛StartBBS、YouBBS、Xiuno对比
  • C++表达式括号匹配
  • 安卓(Android) 刷机教程(任何机型、小米、华为等等)
  • #Linux存储的基本管理
  • Android定时器:实现定时的几种方法
  • 一刀999?怎样让你的 iPhone 手游也拥有开挂般的体验
  • 这是我见过最全的权限系统设计方案!
  • 一文读懂AlphaGo Zero算法
  • JRTPLIB使用实例
  • 颜色代码大全
  • 反向链接是什么(反向链接有什么用)
  • Android App开发基础
  • Windows安装包制作指南——Advanced Installer的使用
  • 指令系统超全知识点详解
  • 计算机专业的N种就业方向!条条大路通高薪!(非常详细)零基础入门到精通,收藏这一篇就够了
  • 质量管理体系之缺陷管理
  • 上海市四金及税后工资计算器
  • 程序员接私活一定要知道的事情,我走的弯路你们都别走了
  • Filter及FilterChain的使用详解