为什么这种写法会出现3*3 的布局,不会是1*9 或者 9*1 了,那里体现出来了3*3 ,
/**
* 设置Imageview(Item) 的宽度等属性
*/
private void initItem()
{// 第一步骤,首先是拿到item 的一个宽度,首先是获得每一个item 的宽度,容器的宽度减去边距,减去中间的间隔,然后除以个数
mItemWidth = (mWidth - mPadding * 2 - mMargin * (mColumn - 1))
/ mColumn;
mGamePintuItems = new ImageView[mColumn * mColumn];
// 生成我们的item,设置rule(也就是我们的关系)
for (int i = 0; i < mGamePintuItems.length; i++)
{
ImageView item = new ImageView(getContext());
item.setOnClickListener(this); // 我们有点击事件
item.setImageBitmap(mItemBitmaps.get(i).getBitmap());// 设置出来图片是乱的
mGamePintuItems[i] = item;
item.setId(i + 1); //设置id relativielayout 提供了很多的rule ,但是rule 中的rightof leftof 中间填写的是id
//在item 的tag 中存储了index,虽然我们乱序了,但是我们的Index 还是保存的是原来的位置。也就是我们判定拼图成功的时候,我们的index就展现了
item.setTag(i + "_" + mItemBitmaps.get(i).getIndex());
// 给每一个item 写,我们是在relativie 中,所以我们就引用这个。
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
mItemWidth, mItemWidth);
// 设置item 的横线间隙首先判定是不是最后一列,要是不是最后一列我们就设置rightMargin
// 不是最后一列
if ((i + 1) % mColumn != 0)
{
lp.rightMargin = mMargin;
}
// 涓嶆槸绗竴鍒�
if (i % mColumn != 0)
{
lp.addRule(RelativeLayout.RIGHT_OF,
mGamePintuItems[i - 1].getId());
}
// 濡傛灉涓嶆槸绗竴琛�, 璁剧疆topMargin鍜宺ule
if ((i + 1) > mColumn)
{
lp.topMargin = mMargin;
lp.addRule(RelativeLayout.BELOW,
mGamePintuItems[i - mColumn].getId());
}
addView(item, lp);
}
}