1,公司给的东西不地道,view的背景图片并没有占满屏幕,画图的时候要考虑背景图片外边界的透明宽度。
1.1,获取view宽度,因为是正方形的,所以设置起来轻松不少
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
this.width = (w-74)/9f;
this.height = (w-74)/9f;
}
2,开画吧,在ondraw里画
2.1,画小方格
Bitmap bitmapPlaybg1 = BitmapFactory.decodeResource(getResources(),R.drawable.ic_play_grid_none_off);
Rect src1 = new Rect(0,0,bitmapPlaybg1.getWidth(),bitmapPlaybg1.getHeight());
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if (mgame.getNumber(i,j)==""){
Rect dst1 = new Rect((int)(i*width+37),(int)(j*width+37),(int)((i+1)*width+37),(int)((j+1)*width)+37);
canvas.drawBitmap(bitmapPlaybg1,src1,dst1,null);
}else if (mgame.usedNumber(i,j)!=0){
Rect dst1 = new Rect((int)(i*width+37),(int)(j*width+37),(int)((i+1)*width+37),(int)((j+1)*width)+37);
canvas.drawBitmap(bitmapPlaybg1, src1, dst1, null);
}else {
Rect dst1 = new Rect((int)(i*width+37),(int)(j*width+37),(int)((i+1)*width+37),(int)((j+1)*width)+37);
canvas.drawBitmap(bitmapPlaybg2,src1,dst1,null);
}
}
}
2.2,画线
for(int i=0;i<9;i++){
canvas.drawLine(37, (i)*height+37,getWidth()-37,(i)*height+37,lightPaint);
canvas.drawLine(37, i*height+38,getWidth()-37,i*height+38,lightPaint);
canvas.drawLine(i*width+37, 37,i*width+37,getWidth()-37,lightPaint);
canvas.drawLine(i*width+38,38,i*width+38,getWidth()-38,lightPaint);
if(i%3==0){
canvas.drawLine(37, (i)*height+37,getWidth()-37,(i)*height+37,darkPaint);
canvas.drawLine(i*width+37, 37,i*width+37,getWidth()-37,darkPaint);
}
}
2.3,画数字
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
canvas.drawText(mgame.getNumber(i, j), i*width+x+37, y+j*height+37, numberPaint);
}
}
3,下边的键盘就是很多button,设置背景和权重就OK了