Android华容道之一步一步实现-7-重构代码
是时候做一点代码的重构了,毕竟已经是一个可运行的版本了,并且顺带做一点点美化的工作,先看效果图,重构和美化完之后的版本效果图。
重构第一部分
如果是数字版,不再使用带有数字的图片,而是使用动态创建数字图片的方式。并在图片上绘制数字,代码如下:
private void draw_text(Bitmap bitmap, String text) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG
| Paint.DEV_KERN_TEXT_FLAG);
Paint rect_paint = new Paint();
rect_paint.setColor(Color.GRAY);
rect_paint.setStyle(Paint.Style.FILL);
RectF rect = new RectF(1, 1, width - 1, height - 1);
canvas.drawRoundRect(rect, 20, 20, rect_paint);
paint.setTextSize(width * 0.5f);
paint.setColor(Color.WHITE);
paint.setFakeBoldText(false);
paint.setTextAlign(Paint.Align.CENTER);
Paint.FontMetrics fontMetrics = paint.getFontMetrics();
float top = fontMetrics.top;
float bottom = fontMetrics.bottom;
int baseLineY = (int) (rect.centerY() - top / 2 - bottom / 2);
canvas.drawText(text, rect.centerX(), baseLineY, paint);
canvas.save(Canvas.ALL_SAVE_FLAG);
canvas.restore();
}
Android华容道之一步一步实现-7-重构代码相关推荐
- Android华容道之一步一步实现-4-图像块移动算法
下一个关键点就是图像块的移动,以如图为例. 假设空格处于第二行第三格,那么此时只有触摸第二行以及第三列的图像块的时候才需要移动图像块,因为别的图像块不能移动. 当触摸发生在合法的图像块的时候,即上面图 ...
- Android华容道之一步一步实现-3 -手指触摸处理
华容道关键点之一出现了,就是处理触摸,包括手指按下,抬起,移动等. 自己实现一个处理触摸的类,然后处理 onTouchEvent(MotionEvent event) 事件,在这里处理手指按下,抬起, ...
- Android华容道之一步一步实现-2-图片分割
因为华容道是16个格子,所以要把一张大一点的图片分割成16个相等的小图片. 可以使用Bitmap.createBitmap方法来进行. 直接上代码 ori_bitmap = BitmapFactory ...
- Android华容道之一步一步实现-序言
女儿看了最强大脑的数字华容道节目之后,就缠着要玩数字华容道,买了实物版,玩了几天,感觉好像还没有过瘾,就让我做个手机版的数字华容道游戏. 说明一下,最终要实现的版本并不是最强大脑那种数字版的华容道,而 ...
- 一步一步教你在 Android 里创建自己的账号系统(一)
大家假设喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 大家在 ...
- 一步一步学ROP之Android ARM 32位篇
蒸米 · 2015/12/17 9:41 0x00 序 ROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术,可以用来绕过现代操作系统的各种 ...
- Android一步一步实现一款实用的Android广告栏
源码:BannerLayoutDemo 有图有真相: bannerLayoutDemo 开源界有一句很有名的话叫"不要重复发明轮子",当然,我今天的观点不是要反驳这句话,轮子理论给 ...
- 一步一步教你如何在AndroidStudio查看Android源码(AOSP源码)
一步一步教你如何在AndroidStudio查看Android源码(AOSP源码) idegen工具 要将Android系统源代码工程导入到Eclipse或者IntelliJ IDEA,关键是要有相应 ...
- 2020最新版Android一步一步教轻松通过ArcSoft虹软平台实现人脸识别功能,保姆级别教程?
Android实现人脸识别功能 第一步:注册并认证成为开发者. 第二步:创建应用 1.认证成功后,我们就可以开始创建应用. 2,填写信息 3.点击添加SDK 4.选择人脸识别 5.选择情况,如图所示. ...
- Android自定义View教你一步一步实现薄荷健康滑动卷尺
前言 前几天写了一篇一步一步教你实现即刻点赞效果后,实现点赞效果主要是自己对自定义View的一些canvas绘制,缩放知识,位移的理解.而朋友说HenCoder还有给出薄荷健康滑动卷尺,小米运动记录界 ...
最新文章
- python扫雷 广度优先_Leetcode之广度优先搜索(BFS)专题-529. 扫雷游戏(Minesweeper)...
- CentOs登陆输入root作为用户名
- 永远不要在 MySQL 中使用“utf8”
- asin c语言中 返回值范围_asin()_C语言asin()详解:反正弦函数,求反正弦值
- tomcat下只有.class文件 没有java文件_解决tomcat发布工程后,WEB-INF/classes下文件不编译的问题...
- android NDk编程
- 麟龙指标通达信指标公式源码_通达信指标公式源码单阳不破主图指标公式
- 开源服务容错处理库Polly使用文档
- 20-172-040-安装-Flink单机安装 flink-1.7.2-bin-hadoop27-scala_2.11
- java定时运行一个url_Swift 4:如何异步使用URLSessionDataTask但请求是否在一个定时队列中?...
- 模拟java_【最强Java面试题系列】消息队列面试场景 “模拟”
- 【社会/人文】概念的理解 —— 断舍离、饭(饭制版)
- 海明码计算(校验码)
- arduino 下载 https://downloads.arduino.cc/packages/package_index.json error
- 【系统集成项目管理工程师】—三点估算
- 厦门大学国家奖学金答辩PPT模板
- 如何求解最大公约数和最小公倍数
- mysql_使用记录.md
- 数据可视化总结——matplotlib、seaborn
- 冶金物理化学复习 --- 湿法分离提纯过程
热门文章
- php中pre标签,html中pre标签与code标签的作用与用法
- 的table数据重复添加_Mysql的奇技淫巧 - 避免重复插入数据
- java src 文件路径_java中获得src路径下文件的常用方法
- C++标准模板库(STL)的概念
- 《数据中台实战》:用户留存分析
- 从C语言的角度重构数据结构系列(八)-数据结构堆知识超级丑数
- MATLAB实战系列(十二)-如何用人工鱼群算法解决带时间窗车辆路径(CVRP)问题(附MATLAB代码)
- 探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
- 完美解决mysql下utf-8的乱码问题
- hadoop使用lzo压缩文件笔记