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

article/2025/10/3 12:28:45







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://chatgpt.dhexx.cn/article/D282EqQl.shtml

相关文章

Android onFinishInflate理解

2019独角兽企业重金招聘Python工程师标准>>> 在View中,有个onFinishInflate方法,当应用从XML加载该组件并用它构建界面之后调用的方法。所以有的同学习惯在该方法中做一些操作,比如通过findViewById获取对象,或者计算宽…

Android View的onFinishInflate和onSizeChanged生命周期详解

1、onFinishInflate 从字面上来看这个方法的作用就是在完成View的布局实例化后的回调,关于布局实例化的内容(LayoutInflater)的学习网址:LayoutInflater原理,通过对这篇博客的 学习可以得知:这个回调方法是…

Android View onFinishInflate

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/125377224 本文出自【赵彦军的博客】 覆写 onFinishInflate /*** Description:* author: zhaoyj* date: 2022/6/20*/ public class MyView extends View {public MyView(Context context, Nullab…

关于onFinishInflate的一些事

关于onFinishInflate的一些事 这个方法相信大家都不会陌生,大家都知道这个方法在onCreate之后执行,要拿到控件宽高要onWindowFocusChanged方法之后才能拿到,平时自定义控件的时候自己也用的不少。但是今天接口有一个要求,让请求每…

编写Pascal代码

编写Pascal代码 注释 在Pascal中,注释括在大括号中或带星号的圆括号中。Delphi 也认可C 风格的注释,即把注释放在双斜线后。例如 {this is a comment} (* this is another comment *) // this is a comment up to the end of the line第一种注释方式较简…

PASCAL程序设计语言 PDF 分享

链接:https://pan.baidu.com/s/1cflbic-tCaG0csUiaHFABA 560d 相关推荐 Go 语言程序设计 中文编程学习进阶 易语言编程系统 Python高级编程 Java数据结构和算法 Java编程思想(第4版) PASCAL 语言是第一个体现结构化程序设计概念的计算机语言,因此它在 60 年代

pascal语法介绍

数据挖掘之数据初步探索 1. 汇总统计 众数:具有最高频率的值,针对离散型数据 百分位数:计算方法(3,4.3,6.2,6.5,7.6,7.8,8.1,9.6,1…

pascal语言基础(三)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;一&#xff09; pascal语言基础&#xff08;二&#xff09; 集合类型 定义 TYPE<集合类型标识符> set of <基类型&g…

pascal语言基础(二)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;一&#xff09; 函数与过程程序设计 函数 1. 定义&#xff1a; FUNCTION <函数名>(<参数表>):<函数类型>;&…

pascal语言基础(一)

该内容为学习 《PASCAL程序设计 第2版》郑启华编著 的笔记&#xff0c;部分与c语言对比学习&#xff0c;方便记忆。 pascal语言基础&#xff08;二&#xff09; 基本介绍 保留字&#xff08;35个&#xff09; AND、ARRAY、BEGIN、CASE、CONST、DIV、DO、DOWNTO、ELSE、END、…

PASCAL语言的基本知识

Pascal是一种计算机通用的高级程序设计语言。它由瑞士Niklaus Wirth教授于六十年代末设计并创立。 以法国数学家命名的Pascal语言。现已成为使用最广泛的基于DOS的语言之一。其主要特点有&#xff1a;严格的结构化形式&#xff1b;丰富完备的数据类型&#xff1b;运行效率高&am…

C语言assert()函数用法总结

&#xfeff;&#xfeff; assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression…

C语言assert函数完全攻略

断言assert函数&#xff0c;C语言assert函数完全攻略 对于断言&#xff0c;相信大家都不陌生&#xff0c;大多数编程语言也都有断言这一特性。简单地讲&#xff0c;断言就是对某种假设条件进行检查。在 C 语言中&#xff0c;断言被定义为宏的形式&#xff08;assert(expressio…

python assert函数解析(最清晰的解释)

欢迎关注WX公众号&#xff1a;【程序员管小亮】 python assert的作用&#xff1a; assert函数用于程序调试 Python 官方文档解释https://docs.python.org/3/reference/simple_stmts.html#assert “Assert statements are a convenient way to insert debugging assertions …

C++中的assert用法

assert用法 void assert(int expression);C中assert&#xff0c;即断言&#xff0c;可以在程序调试阶段检查错误&#xff0c;常用的就比如函数传参时&#xff0c;若是整型&#xff0c;是否超出范围&#xff1b;若是字符串型&#xff0c;地址是否为空等。 在正常时&#xff0c;…

assert()函数(断言函数)

assert()函数&#xff08;断言函数&#xff09; 一&#xff0c;快速了解一下assert函数 void assert (int expression);//括号里面是一个表达式。assert函数是一个宏。 括号里面的表达式如果为真&#xff0c;程序正常执行。 如果函数形式的宏的参数表达式比较等于零&#x…

c语言中assert函数是什么

点击上方蓝字关注我&#xff0c;了解更多咨询 1、assert将通过检查表达式expresion的值来决定是否需要终止执行程序。 2、如果表达式expresion的值是假的(即0)&#xff0c;它将首先向标准错误流stderr打印错误信息。 通过调用abort函数终止程序运行。否则&#xff0c;assert没有…

assert()函数

今天&#xff0c;遇到一个函数返回值时引用&#xff0c;但是返回值存在为NULL的情况。下面是搜到的解决方案 然后&#xff0c;就搜了搜assert()函数的用法&#xff0c;找到一篇&#xff0c;贴在下面assert()函数用法总结 assert宏的原型定义在<assert.h>中&#xff0c;其…

assert()函数用法总结

assert宏的原型定义在<assert.h>中&#xff0c;其作用是如果它的条件返回错误&#xff0c;则终止程序执行&#xff0c;原型定义&#xff1a; #include <assert.h> void assert( int expression ); assert的作用是现计算表达式 expression &#xff0c;如果其值为假…

assert断言函数简介

目录 &#x1f38d;1.整体介绍 &#x1f38d;2.assert() 的用法和机制 &#x1f38d;3.关于NDEBUG 宏 &#x1f38d;4.使用assert()注意事项 &#x1f38d;4.1使用 assert() 时&#xff0c;被检测的表达式最好不要太复杂 &#x1f38d;4.2不要用会改变环境的语句作为断言…