`
kevin2562
  • 浏览: 118334 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多
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作为为起点,以当前画布的宽度和高度为重点即整块画布来填充。

  具体的请查看未来讲到的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完整篇讲到。
分享到:
评论

相关推荐

    Android游戏开发之旅

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

    Android应用开发详解

    只需在Eclipse集成开发环境中简单操作,将工程导入,即可开始学习之旅。 首先,我们从04章节开始,这通常涉及到Android应用程序的基本架构和组件。Android应用主要由四大组件构成:活动(Activity)、服务(Service...

    Android 开发之旅:详解view的几种布局方式及实践

    【Android 开发之旅:详解view的几种布局方式及实践】 在Android应用开发中,构建用户界面至关重要,而View和ViewGroup是构建用户界面的基础。View是Android系统中表示用户界面的基本元素,而ViewGroup则作为容器,...

    老罗Android之旅系列课件

    《老罗的Android之旅》是一套深受Android开发者欢迎的学习资源,由知名技术讲师老罗精心制作。这个压缩包集合了该课程的多个关键主题的PPT文件,旨在为那些希望深入理解Android系统的开发者提供一站式学习材料。以下...

    android开发之旅3.pdf

    在Android开发之旅中,深入理解Android系统的架构是至关重要的。本篇主要探讨Android系统架构的五个核心组成部分:Linux Kernel、Android Runtime、Libraries、Application Framework和Applications。 1. **Linux ...

    自己做的android迷宫小游戏(基于android2.2)

    《Android迷宫小游戏开发详解——基于Android 2.2》 在移动设备上,游戏开发一直是一个热门领域,尤其在Android平台,丰富的API和...通过学习和分析这个项目,你将能够为自己的Android游戏开发之旅打下坚实的基础。

    Android系统原理与开发要点详解

    Android系统是全球最广泛使用的移动操作系统之一,它基于Linux内核,为智能手机、平板电脑以及智能电视等设备提供丰富的...希望这个“Android系统原理与开发要点详解”能帮助你开启Android开发之旅,并在其中不断成长。

    Android 安卓游戏打地鼠源码.rar

    在Android平台上开发游戏,通常需要掌握Java或Kotlin编程语言,因为这两种语言是Android SDK的主要支持语言。Android Studio作为官方集成开发环境(IDE),提供了丰富的工具和库来简化游戏开发流程。打地鼠游戏是一...

    Android开发笔记(基础Android课程)

    ### Android开发基础知识详解 #### 一、Android项目结构与基础控件 在开始学习Android开发之前,理解项目的结构和常用的基础控件是...希望这篇文章能够帮助大家更好地入门Android开发,开启精彩的移动应用开发之旅!

    Android开发(入门)

    ### Android开发(入门)知识点概览 #### 一、课程背景与目标 - **课程背景**:“Android开发(入门)”这份文档源自于一次Google Study Jams活动的笔记记录,...希望这份笔记能够帮助更多人顺利开启Android开发之旅。

    Android入门到精通详解.zip

    《Android入门到精通详解》是一本专为Android初学者设计的教材,旨在提供全面而深入的Android开发...通过阅读这本书,你不仅能掌握Android开发的基础知识,还能了解最佳实践,为自己的Android开发之旅打下坚实基础。

    Android应用源码之Android经典开发-豆瓣网移动客户端+讲解+源代码.zip

    《Android应用源码详解——基于豆瓣网移动客户端》 Android应用源码的分析与学习是提升开发者技能的重要途径,特别是对于像豆瓣网这样的成熟移动应用,其源代码中...所以,欢迎下载并开始你的Android源码探索之旅!

    Google.Android开发入门与实战

    内容简介  《Android开发入门与实战》内容上涵盖了用Android开发的大部分场景,从Android基础介绍、... 最后,祝广大开发者的技术日益精进,早日开始Android开发之旅,赶上移动互联网的第一班车,共赢中国3G未来!

    android 最佳学习路线

    在开始Android的学习之旅之前,首先需要明确一个清晰的学习路线图。本篇文章将详细介绍学习Android所需的基础知识和技术栈,帮助初学者快速上手并深入掌握Android开发的核心技能。 #### 二、必备基础知识 在正式...

Global site tag (gtag.js) - Google Analytics