数独游戏(1)之绘制九宫格,并初始化数据
<数独游戏>之绘制九宫格,并初始化数据
1.在工程里的res/values目录下新建一个colors.xml来存放具体颜色值,已供程序通过R.color.颜色名来调用
this.getResources().getColor(R.color.shudu_background) 获取配置文件中的颜色值
2.新建一个自定义图形类ShuduView继承View父类
1)画九宫格里面的 横线,纵线,每次画出的线要想达到某种效果,需画两条 之间格1像素的位置,且颜色也要搭配好
2)要想让字在单元格中居中,这是一个问题,得设置一下偏移量
X轴方向:比较好设置,就是单元格宽度除以2 , float x = width/2f;
Y轴方向:并不是通过单元格高度除以2,因为涉及到基准线的概念,通过画笔对象调用 getFontMetrics() 方法,获取FontMetrics 对象,也就是获取了 ascent,top,descent,bottom 等属性,四个属性的值都是基于基准线而言
公式:float y = height/2f - (fm.ascent+fm.descent)/2 ; 通过单元格高度除以2,加上(ascent的高度减去descent)除以2
之所以上面的公式中出现减号,是因为 基准线的上方 是负数,
3.Game类,存放一些初始化的数据等等
4.Activty类
5.运行效果: