简单的纸牌游戏设置,创建columns
卡片的行数和数量:
TableLayout tableCards = new TableLayout(this);
RelativeLayout.LayoutParams relLayParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
relLayParams.addRule(RelativeLayout.CENTER_IN_PARENT);
tableCards.setLayoutParams(relLayParams);
int i = 0;
StringBuilder sbCardsDebug = new StringBuilder('\n');
for (int r = 0; r < rows; r++) {
// create a new row
TableRow tr = new TableRow(this);
tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
for (int c = 0; c < columns; c++) {
ImageView card = new ImageView(this);
card.setTag("" + i);
card.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT, TableRow.LayoutParams.WRAP_CONTENT));
card.setImageDrawable(bitmapCardBackScaled);
tr.addView(card);
card.setOnClickListener(cardClickListener);
i++;
}
// add the row:
tableCards.addView(tr);
}
relativeLayoutCardsHolder.addView(tableCards);
在监听器的某个地方,我有一个这样的代码部分:
imageView.setVisibility(View.INVISIBLE);
这imageView
是一张卡(我设置了断点也记录了它,它显示了正确的卡。
问题是:它不会变得不可见。
我在想也许我不在一个好的线程中,或者在设置隐形之后我应该需要做些什么吗?
我试过了:
imageView.post(new Runnable() {
public void run() {
imageView.setVisibility(View.INVISIBLE);
}
});
和
TableLayout parent = (TableLayout) imageView.getParent().getParent();
parent.invalidate();
parent.requestLayout();
并没有成功。请提出任何建议,我没有想法,谢谢。
编辑1:
作为建议,我也尝试过 postDelayed :
imageView.postDelayed(new Runnable() {
public void run() {
imageView.setVisibility(View.INVISIBLE);
}
}, 600);
监听器主体是从第 353 行到第 424 行调用几个带有动画的类,传递引用,它会揭示我的肮脏工作,也会显示业务逻辑(NDA 协议),你对哪一部分感兴趣?- 最少执行 1000 行。