`
burnquist
  • 浏览: 67932 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类

Android游戏开发之旅三 View类详解

 
阅读更多
  在Android游戏开发之旅二中我们讲到了View和SurfaceView的区别,今天Android123从View类开始着重的介绍Android图形显示基类的相关方法和注意点。

  自定义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)用的的是最多的:

  @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中使用类似
 @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;
   }

  在View中如果需要强制调用绘制方法onDraw,可以使用invalidate()方法,它有很多重载版本,同时在线程中的postInvailidate()方法将在Android游戏开发之旅六中的 自定义View完整篇讲到。

文章转载自:http://www.android123.com.cn/androidkaifa/541.html
分享到:
评论

相关推荐

    Android游戏开发之旅

    3.Android游戏开发之旅三 View类详解 4.Android游戏开发之旅四 Canvas和Paint实例 5.Android游戏开发之旅五 Path和Typeface 6.Android游戏开发之旅六 自定义View 7.Android游戏开发之旅七 自定义SurfaceView 8....

    Android开发之旅

    Android开发之旅:组件生命周期(三) 10 Android 开发之旅:又见Hello World!11 Android 开发之旅:深入分析布局文件&又是“Hello World!” 12 Android 开发之旅:view的几种布局方式及实践 13 Android 开发...

    Android开发之旅 完整版pdf

    • Android 开发之旅:组件生命周期(三) • Android 开发之旅:又见Hello World! • Android 开发之旅:深入分析布局文件&又是"Hello World!" • Android 开发之旅:view的几种布局方式及实践 • Android ...

    Android开发之旅——完整版

    • Android 开发之旅:组件生命周期(三) • Android 开发之旅:又见Hello World! • Android 开发之旅:深入分析布局文件&又是"Hello World!" • Android 开发之旅:view的几种布局方式及实践 • Android ...

    Android游戏开发之旅.doc

    今天Android123开始新的Android游戏开发之旅系列,主要从控制方法(按键、轨迹球、触屏、重力感应、摄像头、话筒气流、光线亮度)、图形View(高效绘图技术如双缓冲)、音效(游戏音乐)以及最后的OpenGL ES(Java层)和NDK...

    Android游戏开发20回合

    Android游戏开发三 View类详解 Android游戏开发四 Canvas和Paint实例 Android游戏开发五Path和Typeface Android游戏开发六 自定义View Android游戏开发七 自定义SurfaceView Android游戏开发八 SurfaceView类实例 ...

    android 游戏开发view 框架

    android 游戏开发view 框架

    Android游戏开发之构建游戏框架view与surfacevView的区别

    雨松MOMO带你做游戏 Android游戏开发之构建游戏框架view与surfacevView的区别 ,欢迎大家下载阅读

    Android游戏编程之view源码

    Android游戏系列教程编程之view源码

    Android应用开发详解

    《Android应用开发详解》 作者:郭宏志 编著 内容简介 本书分为三个部分,包括基础篇、技术篇和应用篇。由浅入深地讲述了Android应用开发的方方面面。 第一篇 基础篇 第1章 Android概述 Android概述,讲述了...

    android开发揭秘PDF

    5.1.1 View类开发框架 5.1.2 SurfaceView类开发框架 5.2 Graphics类开发 5.5.1 Paint和Color类介绍 5.2.2 Canvas类介绍 5.2.3 几何图形绘制 5.2.4 字符串绘制 5.2.5 图像绘制 5.2.6 图像旋转 5.2.7 图像缩放 5.2.8 ...

    android开发中常用的工具类和自定义view

    android开发中常用的工具类和自定义viewandroid开发中常用的工具类和自定义viewandroid开发中常用的工具类和自定义viewandroid开发中常用的工具类和自定义viewandroid开发中常用的工具类和自定义viewandroid开发中...

    Android-Android开发之自定义View的功能实现详解。教你一步一步学会自定义View

    Android开发之自定义View的功能实现详解。教你一步一步学会自定义View

    Android自定义组件开发详解

    Android自定义组件开发详解,进阶书籍。本书教你如何更好使用自定义view

    Android View api 详解1

    Android View api 详解-getLeft(...),getLocationInWindow(OnScreen,GlobalVisibleRect,LocalVisibleRect)

    view类详解

    android view类详解 在一个Android应用程序里,用户接口是一系列的View和ViewGroup对象组合而成。Android有很多种View和ViewGroup对象,他们都继承自View基类。 View对象是Android平台用户接口的基本对象。这些...

    Android应用开发详解(PDF)

    从基础到案例覆盖了Android应用开发的三大领域:基础应用、网络应用和游戏应用。 第一篇 基础篇  第1章 Android概述  1.1 Android的前世今生  1.1.1 Android的产生  1.1.2 Android的发展  1.2 Android的...

    andorid 各种view的详解 完整代码

    android view详解 完整代码 非常好用 非常经典的完整代码,

    Android软件开发之盘点自定义View界面大合集借鉴.pdf

    Android软件开发之盘点自定义View界面大合集借鉴.pdf

    Android自定义组件开发详解.docx

    Android自定义组件开发详解,让你彻底理解自定义组件(自定义View、ViewGroup等,彻底了解canvas和paint的基本和高级使用方法)

Global site tag (gtag.js) - Google Analytics