安卓第一趴

目录

1.RelativeLayout及其属性

第一类:

第二类:

第三类:

2.开始操作 


今天给大家讲有关安卓的一些东西,和之前的JAVA不同的是,这次我是先做点东西出来,在做的 过程中进行学习,这样可能知识有漏洞,但是不可否认,学习效率会提高

图片

接下来我会根据代码进行有关知识的说明,也就是个学习笔记,大家共勉

一个简单的对弈五子棋如何做呢?

慢慢来~

图片

1.RelativeLayout及其属性

RelativeLayout相对布局

相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一。它灵活性大很多,当然属性也多,操作难度也大,属性之间产生冲突的的可能性也大,使用相对布局时要多做些测试。

    以上是对RelativeLayout的简单介绍,个人认为还是很清楚的。

    简单知道相对布局的概念之后,我们要探索的实际上是它的属性。

RelativeLayout用到的一些重要的属性:

第一类:

属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物

第二类:

属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边

android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐

第三类:

属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离

    像上面的介绍我们就不需要把每种都记住,应该了解有什么形式,大概形式是什么样子的,输入关键的一些字母,Android stutio就会给出你满意的答复。

    调位置的属性不只是上面所说的,我们可能会经常用到android:gravity属性,举个例子:android:gravity = "center"和上面的android:layout_centerInParent 有什么区别呢?

    这里又牵扯到了LinearLayout(线性布局)。

    LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,按照相对位置来排列所有的widgets或者其他的containers,超过边界时,某些控件将缺失或消失。因此一个垂直列表的每一行只会有一个widget或者是container,而不管他们有多宽,而一个水平列表将会只有一个行高(高度为最高子控件的高度加上边框高度)。LinearLayout保持其所包含的widget或者是container之间的间隔以及互相对齐(相对一个控件的右对齐、中间对齐或者左对齐)。

    gravity是LinearLayout里的属性,而centerInParent是RelativeLayout里的属性。

    下面附上一个LinearLayout属性的效果图,帮助理解吧:

        图片

2.开始操作 

我们做五子棋的时候需要绘制棋盘,放棋子,判输赢等等。主class要继承View视图。View为所有图形的基类,定义了绘图的基本操作。

图片

首先我们要有个五子棋界面的背景图,还应该有白棋黑棋,这是最基础的。

那么怎么将背景图或其他图加入到代码中呢?

图片

我们最后是要把图片放到drawable目录下。

这个其实很简单,找到我们要放入的图片,复制一下,然后右击drawable进行粘贴:

图片

    第一次应该不会出现右边的提示框,直接就将图片加入到drawable目录下了。

在绘制的时候,我们应该使用paint画笔。记得之前看过书上说,panel相当于一个画布,paint是个画笔,你可以设置画笔的粗细大小风格等等,然后进行绘制。所以我们定义一个画笔:

图片

那么画笔的初始化在哪里呢?

我们定义一个方法init(),这个方法放在我们的Panel类的构造函数中:

图片

现在我们就来写这个初始化方法:

图片

第一个初始化的是画笔的颜色;

第二个是抗锯齿功能:

图片

第三个是图像抖动处理:也是为了让图像更加平滑。

第四个是画笔风格,我们使用的是stroke,描边划线。

    好,现在画笔就调好了。下面就可以绘制网格了。

    网格的绘制我们放到view提供的onDraw方法中:

图片

这里只是提供了一个drawBoard的方法,因为我们不仅仅是绘制网格,后面还要绘制棋子。所以各自写一个函数比较好。

这个方法如下:

图片

绘制网格之前我们应该考虑的是整个网格的大小,以及每行每列的网格数。

图片

所以我们需要先定义一下网格整个的宽和高以及每行每列的格子数,我们这里做一个正方形的网格,格子是10*10的。这里要注意的一点是行高设置为float型,因为我们之后在绘制的时候,上下左右要留一点留白的,因为棋子可以下到边界处:

图片

所以我们第一点实际上行、纵坐标是0.5、0.5开始的。第一行的纵坐标y=0.5。这也解释了为什么我们上面绘制方法里写的是:

图片

在绘制的时候,我们要知道,是先进行行的绘制,然后进行列的绘制。多个行和多个列采用循环实现。这里我们举个绘制行的例子:上面两行代码把初始横坐标表示出来了,那么纵坐标怎么表示呢?每一行之间我们设置的是相差1个单位,所以:

图片

然后调用绘制直线的方法即可:

图片

同理,我们可以知道列怎么画了。

给大家看一眼效果图:

图片

这是今天要给大家讲的东西,实际上不多,但是写起来还真是挺费劲的。不过好在可以帮助自己理清代码逻辑,也是有裨益的。明天我们讲一下初始化棋子。这里面注意的点还是挺多的,一起学习吧。

猜你喜欢

转载自blog.csdn.net/allein_STR/article/details/113987208