android surfaceview 入门介绍
由于工作中需自定义控件,以前没写过。
开始时,实用view 实现了,经理说不好,担心效率低,要求每秒需要刷新10次左右。
然后,学习使用 surfaceview。
看了网上简单的Demo,找到himi的教程很不错。
简单说就是,继承 surfaceview 实现callback接口。
构造-加载数据,将资源图片读取为bitmap
创建-将背景bitmap使用 canvas 画出来
处理点击事件,保存消息队列
创建线程处理消息队列-(需要考虑同步)
=============================
需要注意点:
1,为了优化,每次更新指定区域,使用Canvas canvas = mHolder.lockCanvas(rect);指定一个区间
这里需要注意!如果想一次更新多个位置,或者同一个rect 内 更新多个图片,需要
Canvas canvas = mHolder.lockCanvas(rect); drawYouBitmap(); mHolder.unlockCanvasAndPost(canvas); |
一次性画完再:
mHolder.unlockCanvasAndPost(canvas); <br> <br>不然会出现闪烁 |
2,修改view大小,重写一个方法。。。
还有很多,有时间再写,这个之前找到办法,现在找不到了。。
3,多点触摸管理
根据设备而定,模拟器没办法多点。
我用HTCG10可以获得三个点
根据
x = (int) event.getX(1);
y = (int) event.getY(1);
可以获得第二点坐标
获得第三个依次为:
x = (int) event.getX(2);
y = (int) event.getY(2);
然后指定自己的逻辑代码处理。
另外,如果点击事件,move到自定义view外面去,就无法获得坐标!
所以,控制view大小很重要。
标签:
surfaceview
, game
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?