為什么這種寫法會出現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);
}
}
2016-06-03
第一關 3行3列 ?第二關4行4列 ?依次........... ? 所以是3*3
2016-01-08
你好,不是在這個類里面可以看出為什么會是3*3;而是在切圖工具類里面。定義了每個圖片碎塊的寬高是Wiidth(圖片寬度)/pieces(碎片個數)