Android studio游戏开发就是这么简单:卡牌杀系列(核心UI篇:SufaceView的核心用法)
Android studio游戏开发就是这么简单:卡牌杀系列(核心UI篇:SufaceView的核心用法)
Android studio五年经验教你如何:花费了2周快速开发卡牌杀系类游戏,核心思路分享之图片绘制
卡牌杀效果-Android studio游戏开发,如何打造类似三国杀英雄杀类游戏
相关源码 学习加群:
本篇主题:
SufaceView提供一个Canvas, Canvas不能拥有View,所以没有直接DrawView的用法,也不能Canvas.draw(layout),但可以 layout.draw(Canvas) 【听不懂可以直接跳过,进入下面主题】
Sufaceview主要负责绘制Rect 以及Bitmap
Sufaceview的核心任务就是绘制bitmap 以及绘制矩形 【涉及 坐标就有坐标点--- left top (左上角的(x,y))以及 bitmap 的 宽 高】
游戏设计不想后期混乱,导致霸鸽四起,始终坚持 设计模式的单一职责
一个类负责一个任务,一个类管理该任务的所有方法
例如指的的是:任务开始,任务暂停,任务结束
如果你有一个View ,需要在Sufaceview中绘制,则你需要先转换成Bitmap,例如这段代码【第一段 听不懂 看了下面代码.. 】
public static Bitmap loadBitmapFromView(View v) {Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b);v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());v.draw(c);return b;
}
而基于对Bitmap的解析,谷歌官方推荐使用Glide,安排,导入配置
repositories {google()mavenCentral()
}dependencies {implementation 'com.github.bumptech.glide:glide:4.12.0'annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
}
创建一个Bitmap管理生产类
public class BitmapUtils {public static Bitmap ScaledBitmap(Bitmap bitmap,int width,int height){return Bitmap.createScaledBitmap(bitmap, width, height, false);}public static Bitmap loadBitmap(Activity activity,int mip, int w, int h) throws ExecutionException, InterruptedException {Bitmap load = Glide.with(activity).asBitmap().load(mip).submit(300,300).get();return BitmapUtils.ScaledBitmap(load,w,h);}}
调用的时候
BitmapUtils .loadBitmap(Activity activity,int mip, int w, int h)
activity 你的Activity
mip--项目中图片的id,例如:R.drawable.abc 或者R.mipmap.abc
w--指定目标宽度
h--指定目标高度
好了进入主题,sufaceview的绘制Bitmap:
private Bitmap load ;//必须是全局变量,不能是局部变量,Surfaceview运行后是一个死循环,局部变量会占据无限内存导致卡死
public void drawbg(Canvas canvas,int mipmap,int w,int h,int left,int top) {// Log.v("----11","p1 draw ok");try {if (load==null) {load =loadBitmap(mipmap,w,h);//确保非空且只允许只有一个bitmap避免性能出错}else {canvas.drawBitmap(load,left,top,null);//核心语句,绘制赋予左上角坐标(left,top)的Bitmap}} catch (ExecutionException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}
Android studio游戏开发就是这么简单:卡牌杀系列(核心UI篇:SufaceView的核心用法)相关推荐
- android+Unity3D游戏开发之简单的物体运动
android+Unity3D游戏开发之简单的物体运动 其实这篇也是转载的,真的感觉对于我们初学者来说很不错的,不信你看看嘛;原创链接:http://bbs.9ria.com/thread-98192 ...
- 基于Android Studio的蓝牙通信的简单应用与开发
实现基于Android Studio的蓝牙通信的简单应用与开发 实现蓝牙通信 界面展示 核心文件 部分代码展示 总结 实现蓝牙通信 通过权限申请与代码实现,完成蓝牙通信的简单应用与开发. 界面展示 核 ...
- 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.4节文件I/O
本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.4节文件I/O,作者 吴亚峰,更多章节内容可以访问云栖社区"异步社 ...
- Android Studio TV开发教程(十二)帮助用户在电视上找到您的内容
Android Studio TV开发教程 (转自Android官网https://developer.android.com/training/tv/start) 文章源自:光谷佳武 https:/ ...
- 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.1节游戏中的音效
本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.1节游戏中的音效,作者 吴亚峰,更多章节内容可以访问云栖社区"异步 ...
- 《Android Studio应用开发实战详解》——第1章,第1.2节Android系统基础
本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.2节Android系统基础,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...
- 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图
本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...
- 《Android Studio应用开发实战详解》——第1章,第1.1节移动智能设备系统发展现状...
本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.1节移动智能设备系统发展现状,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&qu ...
- 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》.(吴亚峰).[PDF]ckook
图书作者: 吴亚峰 图书编号: 9787115277701 图书格式: PDF 出 版 社: 人民邮电出版社 出版年份: 2012 图书页数: 700-800 [内容简介] 随着智能手机移动嵌入式平台 ...
最新文章
- Mongodb数据库的基本操作
- android模拟器怎么与PC通信
- CSS :root 测试
- Visual Paradigm 教程[UML]:如何在UML中绘制活动图?
- Android SDK上手指南:用户交互
- HDOJ---1232 畅通工程[并查集]
- 网站五万ip需要服务器,30万IP网站要用什么样的服务器?
- android 按钮复用,Android Button 自带阴影效果另一种解决办法
- 29、程序员的面试考题,要求用一个for循环打出乘法表。
- blastn 输出结果每列啥意思_NCBI在线BLAST用法详解
- Python中文社区新专栏作者计划
- C. Divan and bitwise operations
- 使用Feign实现Form表单提交
- Google的秘密通道
- 怎么解决word中英文混合换行后字体间隔变大问题
- python控制其它软件_python——实现ERP软件自动化操作
- 批量更改Excel数据透视表字段汇总方式
- C++string中的insert()插入函数
- 在电脑上安装了百度一键root工具后,启动adb提示:adb server version (31) doesn't match this client (36); killing...
- 富怡CAD计算机在哪,富怡CAD软件如何与富怡数字化仪进行连接
热门文章
- 第四部分、JEECG-BOOT 微服部署文档
- 史上最经典的K线买入技巧
- Linux查看cc编译器版本,如何查看linux版本(转)
- java导出excel合并单元格_Java 导出Excel 合并Excel单元格
- 金融学经济学字母含义
- Apache Hadoop集群设置示例(带虚拟机)
- 解决:Error: geom_point requires the following missing aesthetics: y Run `rlang::last_error()`
- 红米5双清_小米红米5 plus(安卓8.0)刷官方中文Recovery教程,recovery工具分享,recovery下载...
- 什么是OpCode?
- 【多传感器融合理论】03多传感器信息融合理论(上)