为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这种写法会出现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);

}


}


正在回答

2 回答

第一关 3行3列  第二关4行4列  依次...........   所以是3*3

0 回复 有任何疑惑可以回复我~
#1

xiaoxiaohuahua 提问者

非常感谢!
2016-10-18 回复 有任何疑惑可以回复我~

你好,不是在这个类里面可以看出为什么会是3*3;而是在切图工具类里面。定义了每个图片碎块的宽高是Wiidth(图片宽度)/pieces(碎片个数)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android美女拼图小游戏
  • 参与学习       25697    人
  • 解答问题       97    个

本视频教程将带领大家通过自定义控件实现一个拼图游戏

进入课程

为什么这种写法会出现3*3 的布局,不会是1*9 或者 9*1 了,那里体现出来了3*3 ,

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信