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

onmeasure 不是仅仅是测量高度和宽度的么,onlayout不是写布局的么,为什么在onmeasure 里面可以写布局了?

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) // 设置我们规则,也就是i 在i-1 的右边

{

lp.addRule(RelativeLayout.RIGHT_OF,

mGamePintuItems[i - 1].getId());

}

// 如果不是第一样,给所有元素添加top ,并且添加below

if ((i + 1) > mColumn)

{

lp.topMargin = mMargin;

lp.addRule(RelativeLayout.BELOW, // i+1 在i-column 的下面

mGamePintuItems[i - mColumn].getId());

}

addView(item, lp);

}


}


正在回答

举报

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

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

进入课程

onmeasure 不是仅仅是测量高度和宽度的么,onlayout不是写布局的么,为什么在onmeasure 里面可以写布局了?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号