Android应用开发——实验四.docVIP

  • 18
  • 0
  • 约9.93千字
  • 约 20页
  • 2017-05-12 发布于河南
  • 举报
Android应用开发——实验四

阅读文献《Android应用开发揭秘》第五章,运行实例程序,分析程序代码,学习使用View类开发框架; 运行SurfaceView类的实例程序,分析程序代码,熟悉使用SurfaceView类开发框架; 运行Graphics类的实例程序,分析程序代码,熟悉使用Paint类、Color类、Canvas类,学习几何图形的绘制、字符串绘制、图像绘制、图像旋转、图像缩放等方法,学习对图像像素的操作; 运行实例程序,分析程序代码,学习使用Shader类、双缓冲技术、全屏显示等技术; 运行动画实例程序,分析程序代码,学习使用Tween动画、Frame动画、GIF动画播放等技术。 实验报告要求 写出自己所做实验的步骤和内容; 记录实验过程中发现的问题以及解决问题的方法; 给出程序运行过程中主要页面的截图; 提交文件包括:实验报告、源代码、可运行的安装程序,所有文件打包压缩; 压缩包命名格式:班级号+学号+姓名+训练4.rar 实验四 姓名:马征 学号:2011303502 班级阅读第五章运行示例程序学习View类开发框架 分析:该示例中,我们通过实例化Handler对象并重写handleMessage方法实现了一个消息接收器,然后在线程中通过sendMessage方法发送更新界面的消息,当接收器收到更新界面的消息是,执行invalidate方法更新屏幕显示。 以上主要用来绘制主界面,接下来是控制整个应用的操作,比如世界处理,更新频率,相对的需要实现一个Activity类。 体会:在Android中虽然提供了invalidate方法来实现界面刷新,但是invalidate不能直接在线程中调用,因为违背了单线程模型,AndroidUI操作并不是线程安全的,并且这些操作必须在UI线程中执行,因此Android中最常用的方法是利用Handler来实现UI线程的更新。 示例中提供的View类来作为游戏的开发框架,然而当需要开发更加复杂的游戏,并且对程序的执行效率要求很高时,View类就不能满足需求,这个时候我们需要学习SurfaceView类。 SurfaceView类开发框架 当游戏的需求较高的时候,可以使用双缓冲来显示,游戏中的背景、人物、动画等都需要绘制在一个画布上,而SurfaceView可以直接访问一个画布,SurfaceView是提供给需要直接画像素而不是使用窗体部件的应用使用的,Android图形系统中的一个重要概念是Surface,View及其子类要画在Surface上,每个Surface创建一个Canvas对象,用来管理View在Surface上的绘图操作。 SurfaceView在开发时一般都是出现在最顶层,使用时还需要对其惊醒创建、销毁,情况改变的时候进行监视,需要实现SurfaceHolder.Callback接口,需要对被绘制的画布进行裁剪,控制其大小的时候都需要使用SurfaceHolder来完成处理。SurfaceHolder对象需要通过getHolder方法来获得,同事还需要addCallback方法来添加“回调函数”。 总结: surfaceChanged 在Surface的大小发生改变时激发 SurfaceCreated 在创建Surface时激发 surfaceDestroyed 在销毁Surface时激发 addCallback 给SurfaceView添加一个回调函数 lockCanvas 锁定画布,绘图之前必须锁定画布才能得到当前画布对象 UnlockCanvasAndPost 开始绘制时,锁定了画布,绘制完成之后解锁画布 removeCallback 从SurfaceView中移除回调函数 分析:这个示例中,控制整个应用流程的Activity类和上一节差不多,首先需要控制循环。 在开始定义SurfaceHolder,然后对SurfaceHolder实例化,添加回调;根据上个总结的表格,Surfacc的大小发生改变的时候激发surfaceChanged Graphics类开发 开发游戏,必须在屏幕上绘制2D图形,而在Android中需要通过graphics类显示2D图形,graphics中包括了Canvas、Paint、Color、Bitmap、2D几何图形等常用类。可以绘制点、线、颜色、图像处理、2D几何图形等功能。 Paint和Color类 Paint类中定义了很多的效果,根据文档,列出效果如下: SetAntiAlias 设置画笔的锯齿效果 setColor 设置画笔的颜色 SetARGB 设置画笔的a r p g 值 setAlpha 设置Alpha值 setTextSize 设置字体尺寸 setStyle 设置画笔风格,空心或者

文档评论(0)

1亿VIP精品文档

相关文档