Android 游戏开发之 SurfaceView

【Android游戏开发之二】剖析游戏开发用view还是surfaceView ?! 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/295.html很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这 阅读详情

   当我们从事复杂的图像绘制或者对程序的执行效率要求比较高的时候,我们会发现View是不能满足需求的。View是widget框架下的一个直接拖拉的控件产物。例如我们需要使用双缓冲来显示,直接访问画布canvas.这些都导致了我们需要比View更加强大的SurfaceView的出现。

    在使用SurfaceView的时候我们需要注意的是,使用他们绘图的时候,一般都是出现在最顶层的。使用时需要对其进行创建、销毁、情况改变时进行监视,这个需要实现SurfaceHolder.Callback接口。如果要对被绘制的画布进行裁剪,控制其大小时都需要用SurfaceHolder来完成处理。

    在SurfaceView的派生类中,使用getHolder方法来获取SurfaceHolder对象。同时还需要addCallback方法来添加回调函数。

 

surfaceChanged :在surfaceview的大小发生改变的时候调用。

surfaceCreated  : 在创建Surface时激发。

surfacedestroyed:在销毁Surface时激发。

addCallback:给SurfaceView添加一个回调函数。

lockCanvas :锁定画布。绘图之前必须锁定画布才能够得到画布对象。

unlockCanvasAndPost:开始绘制时锁定了画布,绘制完成之后解锁画布。

removeCallback:从SurfaceView中移除回调函数。

 

 

SurfaceView不同于View之处在于,SurfaceView不需要通过线程来更新视图,但是再绘制前需要使用lockCanvas锁定画布,并且得到画布,然后在画布上绘制你需要的图像。绘制完成之后需要使用lockCanvasAndPost方法来解锁画布。于是才能显示在屏幕之上。事件的处理规则和View是一样的。

 

 下面我们来再屏幕闪显示一组图片,来做个Demo.

 

 

这里只是简单的记录使用方法。Android的API实在太多了。

 

【Android游戏开发十四】深入Animation,在SurfaceView中照样使用Android—Tween Animation! 李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/331.html 很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑 阅读详情

相关推荐

【Android游戏开发之六】在SurfaceView中添加组件!!!!并且相互交互数据!!!!

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/306.html 很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑

李华明Himi 2万+

Android开发之SurfaceView详解

SurfaceView介绍 通常情况程序的View和用户响应都是在同一个线程中处理的,这也是为什么处理长时间事件(例如访问网络)需要放到另外的线程中去(防止阻塞当前UI线程的操作和绘制)。但是在其他线程中却不能修改UI元素,例如用后台线程更新自定义View(调用View的在自定义View中的onDraw函数)是不允许的。 如果需要在另外的线程绘制界面、需要迅速的更新界面或则渲染UI界面需要

a641832648的博客 789

Android游戏开发:精通SurfaceView框架

是Android中用于自定义视图的一种方式,特别适用于需要高效绘制的场景,比如游戏或视频播放。其核心在于,它有自己的Surface(画布),允许在不同的线程上进行绘制操作,从而不会阻塞主线程的UI更新,保证应用的流畅性。SurfaceHolder接口在Android开发中扮演着控制SurfaceView外观和行为的角色。它允许开发者直接操作SurfaceView的Surface,例如,可以锁定画布进行绘制、修改尺寸、改变格式等。

weixin_32252929的博客 981

Android之SurfaceView使用总结

1.概念       SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图。它的特性是:可以在主线程之外的线程中向屏幕绘图上。这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布canvas中画出。 2.实现方法 1)实现步骤

出头天 791

android之surfaceview游戏开发

android之surfaceview游戏开发

Android基于SurFaceView的小游戏

Android的SurFaceView 小游戏,天上掉下来小蘑菇,吃掉增加分数,达到一定分数后,掉落速度增加,吃到星星可以增加人物移动速度.暂时只适应480*800的分辨率,可以用模拟器运行.

SurfaceView 游戏开发的一些基础知识和注意事项

  surfaceview 是游戏开发和视频播放常用的控件,因此我们要自己开发一些小游戏或者视频播放器多用来继承该view,并添加自己的独特功能。下面就以做游戏的框架来介绍: 先介绍一些基础知识: 1、继承surfaceview的view(就简称MyView),要想在布局文件中能使用,我们要覆写surfacview的构造方法: public MySurfaceView(Conte...

weixin_30241919的博客 174

Android SurfaceView 游戏 flabby bird 完整代码

代码为博客的实例代码,http://blog.youkuaiyun.com/lmj623565791/article/details/43063331 有问题,请博客留言

Android开发——SurfaceView使用总结

0. 前言在Android开发中,如果需要在主线程之外的线程绘制界面、View需要频繁刷新或刷新时数据流较大时,就要考虑使用SurfaceView了。因为SurfaceView可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。1. SurfaceView和View的区别(1)View主要用于主动刷新的情况下,而SurfaceView多用于频繁地被动刷新。(2)View是在主...

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭ 5730

WSL2迁移后用户名不见了?一招教你快速恢复Ubuntu22.04默认用户

本文针对WSL2迁移后Ubuntu 22.04默认用户名丢失的常见问题,提供了详细的诊断与修复方案。通过分析迁移底层逻辑,指导用户使用`ubuntu2204.exe config --default-user`命令或配置`/etc/wsl.conf`文件快速恢复用户身份,并涵盖权限修复、冲突解决及自动化迁移脚本等进阶内容,确保子系统迁移后环境完整可用。

web39explorer的博客 556

comfyui从入门到精通二:提示词规则详解

《AI绘画提示词使用全指南》摘要: 本文系统解析AI绘画提示词的核心规则与实用技巧。关键点包括:1) 空格与下划线的本质差异,webui会自动转换但comfyui保留原格式;2) 数字与单词表达(如1girl/one girl)会导致风格变化;3) 三种权重控制方式(数值标注、括号嵌套、位置效应),其中数值标注最直观有效;4) 位置衰减公式揭示提示词排序对效果的影响权重。同时指出当前AI绘画仍存在角色一致性等更复杂的技术瓶颈。全文通过多组对比实验,为创作者提供从基础语法到高阶控制的完整解决方案。

ScottePerk的博客 1922

Android开发:SurfaceView基本用法总结及开发问题分享

本文主要讲解如何使用SurfaceView,并不涉及原理讲解,旨在帮助大家快速上手SurfaceView开发。

MichaelX的专栏 4285

ABAP CDS 和 HANA SQL 的关系

摘要: ABAP CDS与HANA SQL既有紧密联系又有本质区别。ABAP CDS作为语义数据建模框架,在SQL基础上扩展了业务语义层,通过注解(annotations)、关联关系(associations)等机制为数据附加业务含义,并支持权限控制、客户端处理等ABAP平台特性。虽然CDS实体最终会转换为HANA数据库对象执行,但它并非简单的SQL封装,而是构建了独立于数据库的语义模型。二者在数据库执行层深度融合,ABAP CDS通过代码下推技术将计算任务优化到HANA层完成。实际开发中应优先使用ABAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 858

Android游戏开发之SurfaceView与游戏开发

Android中surfaceView通常被用来作为显示游戏画面的载体,这里介绍surfaceView的基本用法,和我的探索。

红叶之枫的博客 2421

单稳态触发器Multisim电路仿真——硬件工程师笔记

本文系统介绍了单稳态触发器的基础知识及其实现方式。主要内容包括:1)单稳态触发器的工作原理、电路结构、特点及应用;2)555定时器实现单稳态触发器的配置及工作过程;3)使用反相器和与非门实现积分型和微分型单稳态触发器的电路结构及工作原理。文章详细阐述了各种实现方式的特性、应用场景及设计考虑,为硬件工程师提供了实用的电路设计参考。最后还附有相关笔试面试题链接,便于读者进一步学习扩展。

XU157303764的博客 1875

39-高级优化技术:指令调度与乱序执行 - 手把手教你手写CPU

本文介绍了现代处理器设计中提高指令级并行性(ILP)的两种关键技术:指令调度和乱序执行。指令调度分为静态调度(由编译器完成)和动态调度(由硬件完成),后者能更好适应运行时情况但复杂度更高。乱序执行通过动态重排指令顺序提高硬件利用率,其核心组件包括重排序缓冲区、保留站和寄存器重命名。文章提供了保留站的Verilog实现示例,并分析了不同优化技术在性能、硬件开销和功耗方面的权衡。最终指出,CPU设计需根据性能、功耗等需求选择合适的优化技术。

2301_79143213的博客 85

【Android游戏开发之三】剖析 SurfaceView ! Callback以及SurfaceHolder!!

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/android-game/296.html很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这

李华明Himi 4万+

Unreal Engine Profiler:动画系统性能分析教程_2024-07-23_03-05-38.Tex

Unreal Engine Profiler 是一个内置的性能分析工具,它可以帮助开发者识别和解决游戏中的性能瓶颈。Profiler 提供了详细的性能数据,包括 CPU 使用率、GPU 负载、内存使用情况等,特别针对动画系统,可以查看动画蓝图的执行时间、骨骼动画的计算成本、以及动画混合和重定向的效率。通过这些数据,开发者可以定位到具体的问题,比如哪些动画状态消耗了过多的 CPU 时间,或者哪些动画资源导致了内存泄漏。

824

Android游戏开发用View还是SurfaceView?

Android游戏开发用View还是SurfaceView? 在游戏开发过程中经常用到两种显示类:一种是View,另一种则是SurfaceView。在这里我们来讨论在Android游戏开发中应该用哪种比较合适!一下我们来分析这两种显示类的异同和用法。Surfa

ch_984326013的专栏 1616

微信小程序中使用画布canvas实现动态心电图绘制

近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。人家都说小程序用原生的特别难,大部分都用uniapp开发,说是这个方便快捷,还能写app呢,因为我们的项目,需要用到蓝牙采集数据、画布画仪表盘以及心电图等,所以我们不太敢用uniapp开发,硬着头皮开始用原生开发。开发的过程中,也遇到过很多问题,但是好在经过我们团队的不懈努力,问题基本都解决了。下面我就来分享一下,在小程序中,如何通过canvas。

穆雄雄的博客 3651

R数据分析:潜在转化分析LTA的做法和解释(一)

之前给大家写了很多潜在类别分析的教程Mplus教程:如何做潜在类别分析LCAR数据分析:用R语言做潜类别分析LCAMplus数据分析:潜在类别分析(LCA)流程(详细版)R数据分析:再写潜在类别分析LCA的做法与解释,今天继续给大家拓展一步。 今天要介绍的就是潜在转换分析,这个东西就是LCA的纵向版本。是一个专门用来研究质变的统计技巧。有一句话叫做量变起质变,你怎么知道质变到底发生没有?就用潜在转换分析。 Latent transition analysis is an extension of...

Codewar的博客 7702

android游戏开发初学之SurfaceView绘制界面

绘制界面需要先锁定一个画布,创建画笔,绘制完成之后需要解锁画布并提交 package com.learn.swl.game; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import an

s443770865的博客 624

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Android游戏开发使用View还是SurfaceView

Cocos2d-x,Android,IOS,游戏,HTML5开发/交流/学习/资源 沈大海 2836

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android 游戏开发之SurfaceView框架

首先我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; the Su

肖赛SoAi 1783

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android游戏开发初学之SurfaceView创建

首先我们先来看下官方API对SurfaceView的介绍 SurfaceView的API介绍 Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format of this surface and, if you like, its size; th

s443770865的博客 914
上一篇: Android 之 ProgressDialog
下一篇: Android Tween Animation
dadahacker
博客等级 码龄20年 78粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值