1.先上效果图

2.绘制步骤

1.在你要显示的Activity里添加如下几句代码:

public class MainActivity extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

requestWindowFeature(Window.FEATURE_NO_TITLE);

MySurfaceView msv=new MySurfaceView(this);

setContentView(msv);

}

}

将屏幕设成全屏模式,并且无标题形式

创建自己的SurfaceView命名为MySurfaceView用于棋盘的绘制

将屏幕的内容设为MySurfaceView的实例

2. 定义自己的SurfaceView时要注意继承SurfaceView这个控件并实现Callback接口

3. 添加横屏格子数和竖排格子数等参数

4.在构造函数中获得处理绘画的Holder并设置背景图片。

5.在回调函数surfaceCreated里面绘制横线和竖线,以形成棋盘。代码如下:

/**

* 线条格数的划分受所在屏幕分辨率的影响而定

* 本例分辨率参考1024*600【竖屏】

*/

public class MySurfaceView extends SurfaceView implements Callback {

private Bitmap bm;//背景图片

private SurfaceHolder sfh;

private Canvas canvas;

private float tileW,tileH;//每个格子的宽高

private int screenW,screenH;//屏幕的宽高

private static int GRIDW=10,GRIDH=15;//横、纵格子数目

private static int startW=10,startH=22;//左右上下的内缩距离

public MySurfaceView(Context context) {

super(context);

bm=BitmapFactory.decodeResource(getResources(), R.drawable.background);

sfh=this.getHolder();

sfh.addCallback(this);

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

screenW=this.getWidth();

screenH=this.getHeight();

tileW=(screenW-2*startW)/GRIDW;//宽:(600-2*10)/10=58

tileH=(screenH-2*startH)/GRIDH;//高:(1024-2*22)/15=65.33……

canvas=sfh.lockCanvas();

//canvas.drawColor(Color.WHITE);

Paint paint=new Paint();

canvas.drawBitmap(bm, 0, 0, paint);

paint.setColor(Color.GREEN);

paint.setStrokeWidth(1);

paint.setStyle(Style.STROKE);

float startX=0,startY=0;

for(int i=0;i

startX=startW+i*tileW;

startY=startH;

canvas.drawLine(startX, startY, startX, screenH-startH, paint);//(x,y[min])-->(x,y[max])

}

for(int i=0;i

startX=startW;

startY=startH+i*tileH;

canvas.drawLine(startX, startY, screenW-startW, startY, paint);//(x[min],y)-->(x[max],y)

}

if(canvas!=null){

sfh.unlockCanvasAndPost(canvas);

}

}

@Override

public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

}

}3.运行即可看到上述效果图了

android 写出棋盘效果,Android五子棋棋盘的绘制相关推荐

  1. Python仅四步写出完整漂亮的五子棋

    最近比较闲,将写游戏练习python的心得发出来.先以五子棋为例,实现基本功能简单四步即可写出完整漂亮的五子棋,代码不过140余行.现一步一步分解发出来,方便初学者交流. 虽然代码看上去不是很专业,不 ...

  2. 图片上的文字用CSS写出毛玻璃效果

    图片上的文字用CSS写出毛玻璃效果  2016-10-04 08:11    网页设计   标签:css   1297    发表评论 半透明颜色最初的使用场景之一就是作为背景.将其叠放在照片类或其他 ...

  3. android 自定义view 动画效果,Android自定义view实现阻尼效果的加载动画

    效果: 需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又 ...

  4. android 颜色过渡动画效果,Android buttom textview 颜色平滑过渡的动画效果

    1.TransitionDrawable.例如,在文件夹中绘制一个xml文件,你可以这样写: 然后,在你的xml的实际检视你都引用这个TransitionDrawable在android:backgr ...

  5. android+酷炫动画效果,Android简单酷炫点击动画(附源码)

    在Android5.0之前, Android的点击效果一直很low, 即使5.0的波纹效果也不尽如人意. 而我之前写过一种比较酷炫的点击效果, 最近抽了点时间完善一下, 把阴影效果加入了进去, 大家先 ...

  6. android绘图拖影效果,Android自定义View绘图实现拖影动画

    前几天在"Android绘图之渐隐动画"一文中通过画线实现了渐隐动画,但里面有个问题,画笔较粗(大于1)时线段之间会有裂隙,我又改进了一下.这次效果好多了. 先看效果吧: 然后我们 ...

  7. android 动态壁纸 波浪效果,Android使用自定义View实现360手机卫士波浪球进度的效果...

    像360卫士的波浪球进度的效果,一般最常用的方法就是画线的方式,先绘sin线或贝塞尔曲线,然后从左到右绘制竖线,然后再裁剪圆区域. 今天我这用图片bitmap的方式,大概的方法原理是: (1)首先用c ...

  8. android 播放gif动画效果,Android开发:教您如何让Gif动画动起来

    我们已经连续推出<如何实现TCP和UDP传输>.< Android 提供了另外一种解决的办法,就是使用AnimationDrawable 这一函数使其支持逐帧播放,但是如何把gif ...

  9. android+酷炫动画效果,Android酷炫动画效果之3D星体旋转效果

    在Android中,如果想要实现3D动画效果一般有两种选择:一是使用Open GL ES,二是使用Camera.Open GL ES使用起来太过复杂,一般是用于比较高级的3D特效或游戏,并且这个也不是 ...

  10. android点赞的动画效果,android实现点赞动画

    想让APP给人一个好的映像,无非使自己实现的功能更加炫丽!! 接下来给大家介绍下点赞的一个动画效果: 接下来看看是如何实现的: 简单布局如下: xmlns:tools="http://sch ...

最新文章

  1. 2019最新进展 | Transformer在深度推荐系统中的应用
  2. python六十五:描述符(__get__, __set__, __delete__)
  3. Android开发之旅:组件生命周期(二)
  4. 去掉标题栏全屏显示代码
  5. html dom 知乎,知乎登录页 - 粒子运动效果
  6. Comparable和Comparator区别是什么?差点吃屎
  7. 学术前沿 | DeepMind最新成果:图表示学习算法推理~46页ppt
  8. 【5】测试用例设计-状态迁移图
  9. 电脑销售渠道_小镇购买电脑遇难题:渠道少,价格无从比较!
  10. NYOJ241 - 字母统计
  11. linux导出Mysql数据sql脚本
  12. c语言程序设计课程表,c语言怎样编写课程表,请问程序怎样写?
  13. 数据挖掘——无量纲化
  14. hyperledger环境搭建(mac11.1、ubunt20)
  15. AI记者上岗,百度数字人度晓晓云上采访全国五一劳动奖获得者
  16. 问题 C: 网格涂色
  17. UE4移动平台AR开发快速预览
  18. 如何使用阿里百川hotfix热修复功能(三)
  19. 承香墨影的行业周报-0x0011
  20. 中国二氯甲烷行业研究与投资前景预测报告(2022版)

热门文章

  1. 国外邮件服务器,在国外发邮件连不上国内的邮件服务器
  2. twiproxy - 基于GTAP 0.4的twitter API proxy
  3. ASP.NET Core 解决控制台输出日志内容前面[40m等乱码字符
  4. 【黄啊码】vue配合PHP实现导出excel进度条显示
  5. 计算机安装msvcr110.dll,安装WampServer报错 计算机中丢失MSVCR110.dll 的解决方法 | 睿客网...
  6. Windows 11如何使用IE浏览器
  7. c语言开发无人机自动驾驶仪,无人机自动驾驶仪.pdf
  8. excel股票今日走势计算机,怎样用excel 实时读取 股票日线数据
  9. vue+echarts平面地图和飞线
  10. 《武则天正传》读后感