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的核心用法)相关推荐

  1. android+Unity3D游戏开发之简单的物体运动

    android+Unity3D游戏开发之简单的物体运动 其实这篇也是转载的,真的感觉对于我们初学者来说很不错的,不信你看看嘛;原创链接:http://bbs.9ria.com/thread-98192 ...

  2. 基于Android Studio的蓝牙通信的简单应用与开发

    实现基于Android Studio的蓝牙通信的简单应用与开发 实现蓝牙通信 界面展示 核心文件 部分代码展示 总结 实现蓝牙通信 通过权限申请与代码实现,完成蓝牙通信的简单应用与开发. 界面展示 核 ...

  3. 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.4节文件I/O

    本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.4节文件I/O,作者 吴亚峰,更多章节内容可以访问云栖社区"异步社 ...

  4. Android Studio TV开发教程(十二)帮助用户在电视上找到您的内容

    Android Studio TV开发教程 (转自Android官网https://developer.android.com/training/tv/start) 文章源自:光谷佳武 https:/ ...

  5. 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.1节游戏中的音效

    本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.1节游戏中的音效,作者 吴亚峰,更多章节内容可以访问云栖社区"异步 ...

  6. 《Android Studio应用开发实战详解》——第1章,第1.2节Android系统基础

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.2节Android系统基础,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&quo ...

  7. 《Android Studio应用开发实战详解》——第1章,第1.5节Android开发学习路线图

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.5节Android开发学习路线图,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区& ...

  8. 《Android Studio应用开发实战详解》——第1章,第1.1节移动智能设备系统发展现状...

    本节书摘来自异步社区<Android Studio应用开发实战详解>一书中的第1章,第1.1节移动智能设备系统发展现状,作者 王翠萍,更多章节内容可以访问云栖社区"异步社区&qu ...

  9. 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》.(吴亚峰).[PDF]ckook

    图书作者: 吴亚峰 图书编号: 9787115277701 图书格式: PDF 出 版 社: 人民邮电出版社 出版年份: 2012 图书页数: 700-800 [内容简介] 随着智能手机移动嵌入式平台 ...

最新文章

  1. Mongodb数据库的基本操作
  2. android模拟器怎么与PC通信
  3. CSS :root 测试
  4. Visual Paradigm 教程[UML]:如何在UML中绘制活动图?
  5. Android SDK上手指南:用户交互
  6. HDOJ---1232 畅通工程[并查集]
  7. 网站五万ip需要服务器,30万IP网站要用什么样的服务器?
  8. android 按钮复用,Android Button 自带阴影效果另一种解决办法
  9. 29、程序员的面试考题,要求用一个for循环打出乘法表。
  10. blastn 输出结果每列啥意思_NCBI在线BLAST用法详解
  11. Python中文社区新专栏作者计划
  12. C. Divan and bitwise operations
  13. 使用Feign实现Form表单提交
  14. Google的秘密通道
  15. 怎么解决word中英文混合换行后字体间隔变大问题
  16. python控制其它软件_python——实现ERP软件自动化操作
  17. 批量更改Excel数据透视表字段汇总方式
  18. C++string中的insert()插入函数
  19. 在电脑上安装了百度一键root工具后,启动adb提示:adb server version (31) doesn't match this client (36); killing...
  20. 富怡CAD计算机在哪,富怡CAD软件如何与富怡数字化仪进行连接

热门文章

  1. 第四部分、JEECG-BOOT 微服部署文档
  2. 史上最经典的K线买入技巧
  3. Linux查看cc编译器版本,如何查看linux版本(转)
  4. java导出excel合并单元格_Java 导出Excel 合并Excel单元格
  5. 金融学经济学字母含义
  6. Apache Hadoop集群设置示例(带虚拟机)
  7. 解决:Error: geom_point requires the following missing aesthetics: y Run `rlang::last_error()`
  8. 红米5双清_小米红米5 plus(安卓8.0)刷官方中文Recovery教程,recovery工具分享,recovery下载...
  9. 什么是OpCode?
  10. 【多传感器融合理论】03多传感器信息融合理论(上)