Android canvast View 代码实例
package com.app.canvastest; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.Log;
import android.view.View; public class MapView extends View { Bitmap bitmap = null;
int[][] map_data ={
{ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 7, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 7, 2, 2, 2, 7, 2, 2, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 7, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 11, 2, 2, 2, 2, 8, 2, 2, 2, 2, 2, 6, 2, 2,
2, 2, 2, 2, 2, 7, 2, 2, 2, 7, 2, 21, 21, 2, 2, 0,
0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 7, 2, 13, 13, 13, 13, 13, 7, 2, 2, 2, 2, 6, 2, 2, 8,
6, 2, 11, 2, 2, 2, 2, 2, 8, 2, 2, 2, 11, 6, 6, 2,
2, 2, 2, 2, 7, 7, 2, 2, 2, 7, 2, 2, 2, 2, 21, 21,
21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 2,
2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 7, 2, 1, 2, 13, 2, 2, 7, 2, 2, 2, 2, 6, 2, 2, 8,
6, 2, 2, 11, 2, 2, 2, 2, 8, 2, 2, 11, 2, 2, 2, 6,
6, 2, 2, 2, 7, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2,
2, 2, 21, 21, 21, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 },
{ 7, 2, 1, 1, 8, 2, 2, 7, 2, 2, 2, 6, 6, 2, 2, 8,
6, 2, 2, 11, 2, 2, 2, 2, 8, 2, 11, 2, 2, 2, 2, 2,
2, 2, 6, 2, 7, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 21, 21, 21, 21, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0 }
}; public MapView(Context context) {
super(context);
setFocusable(true);
try {
bitmap = BitmapFactory.decodeResource(context.getResources(),
R.drawable.map);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void onDraw(Canvas canvas) {
try {
super.onDraw(canvas);
Paint paint = new Paint();
// 地图总行数
int maxRows = this.map_data.length;
// 地图总列数
int maxCols = this.map_data[0].length;
for (int row = 0; row < maxRows; row++) {
for (int col = 0; col < maxCols; col++) {
// 小图编号
int imgId = this.map_data[row][col];
imgId = imgId - 1;
// 小图在手机屏幕上的y坐标
int y = row * 24;
// 小图在手机屏幕上的y坐标
int x = col * 24;
// 小图在大图上的行数
int smallImageRow = imgId / 7;
// 小图在大图上的偏移量
int offsetY = smallImageRow * 24;
int smallImagecol = imgId % 7;
int offsetX = smallImagecol * 24;
// 画大图中的小图
drawClipImage(canvas, paint, this.bitmap, x, y, offsetX,
offsetY, 24, 24);
Log.d("game", x + "," + y + "," + offsetX + "," + offsetY);
}
Log.d("game", "-------------------------");
}
paint.setColor(0xFFFF0000);
canvas.drawText("aa", 50, 300, paint); } catch (Exception e) {
e.printStackTrace();
}
} private void drawClipImage(Canvas canvas, Paint paint, Bitmap bitmap,
int x, int y, int offsetX, int offsetY, int width, int height) {
canvas.save();// 记录原来的canvas状态
canvas.clipRect(x, y, x + width, y + height);
canvas.drawBitmap(bitmap, x - offsetX, y - offsetY, paint);
canvas.restore();// 恢复canvas状态
}
}
Android canvast View 代码实例的更多相关文章
- Android应用内 代码截屏(获取View快照)和 禁止截屏
1. 应用内的代码截屏(获取View的快照) Android的View类中提供了获取控件绘制缓存的方法,这种截屏的方式仅限于应用内自己的Activity界面,不需要任何权限,严格来说该方法不属于截屏, ...
- 深入理解 Android 之 View 的绘制流程
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- web service上传参数代码实例
web service上传参数代码实例 这次做的项目用到webservice比较多,最开始在网上看的参考dome,发现都不行,后来发现安卓4.0以后有很大的不同,在做传参时,有些东西需要注意: 第一, ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- 简单说说Android自定义view学习推荐的方式
这几天比较受关注,挺开心的,嘿嘿. 这里给大家总结一下学习自定义view的一些技巧. 以后写自定义view可能不会写博客了,但是可以开源的我会把源码丢到github上我的地址:https://git ...
- 【转】深入理解Android之View的绘制流程
概述 本篇文章会从源码(基于Android 6.0)角度分析Android中View的绘制流程,侧重于对整体流程的分析,对一些难以理解的点加以重点阐述,目的是把View绘制的整个流程把握好,而对于特定 ...
- Android自定义View前传-View的三大流程-Measure
Android自定义View前传-View的三大流程-Measure 参考 <Android开发艺术探索> https://developer.android.google.cn/refe ...
- Android微信分享功能实例+demo
Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留 ...
随机推荐
- 字符串中去除多余的空格保留一个(C#)
在C#的字符串,其中有许多空格,现要求是把多余的空格去除保留一个.原理是使用Split()方法进行分割,分割有一个选项是RemoveEmptyEntries,然后再把分割后的字符串Join起来. st ...
- Vue 开发环境搭建 (Mac)
一.初识 由于个人工作原因以及技术需要一个提升,略晚的开始初探Vue ~.~ 二.那么Vue是什么呢? 他就是一个前端的框架,特点是数据双向绑定.组件化. 三.推荐开发环境 四.环境安装 打开终端运行 ...
- CF 859E Desk Disorder
题目大意:一个经典的游戏:抢椅子.有\(n\)个人以及\(2n\)把椅子.开始时每个人坐在一把椅子上,而且他们每个人都有一个下一步想坐的位置(可以与之前重合).每一个下一次可以在自己现在做的椅子和想坐 ...
- HBase最佳实践-管好你的操作系统
本文由 网易云发布. 作者:范欣欣 本篇文章仅限本站分享,如需转载,请联系网易获取授权. 操作系统这个话题其实很早就想拿出来和大家分享,拖到现在一方面是因为对其中各种理论理解并不十分透彻,怕讲不好: ...
- Flutter - TabBar导航栏切换后,状态丢失
上一篇讲到了 Flutter - BottomNavigationBar底部导航栏切换后,状态丢失 里面提到了TabBar,这儿专门再写一下吧,具体怎么操作,来不让TabBar的状态丢失.毕竟大家99 ...
- (7)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 利用Polly+AOP+依赖注入封装的降级框架
创建简单的熔断降级框架 要达到的目标是: 参与降级的方法参数要一样,当HelloAsync执行出错的时候执行HelloFallBackAsync方法. public class Person { [H ...
- Notes of Daily Scrum Meeting(12.22)
今天的团队任务总结如下: 团队成员 今日团队工作 陈少杰 进行网络连接的调试 王迪 优化搜索的算法 金鑫 准备前台的接口,查阅相关的资料 雷元勇 优化算法,对搜索进行测试 高孟烨 修改UI的接口,准备 ...
- linux第三次实践:ELF文件格式分析
linux第三次实践:ELF文件格式分析 标签(空格分隔): 20135328陈都 一.概述 1.ELF全称Executable and Linkable Format,可执行连接格式,ELF格式的文 ...
- 11-Python3从入门到实战—基础之生成器和迭代器
Python从入门到实战系列--目录 切片 Python提供切片(Slice)操作符用来获取列表.元组等数据中的部分元素:如,读取列表 list[m:n]:表示获取m-n区间的元素 list[m:n: ...
- auto_increment 自增键的一些说明
导致auto_increment变小的几种情况: 1. alter table xx auto_increment = yy; 2. truncate table 3. restart mysql 第 ...