首先,我创建了一个名为Card的对象,它代表了纸牌游戏的图像 然后,我创建了一个接收Vector of Cards的功能,并在屏幕上绘制图像。
现在,让我解释一下正在发生的2个场景,一个工作得很快,另一个工作很慢。
当我创建卡片矢量时,我创建了新卡片并将其逐个添加到矢量中:
vect.add(new Card(1, '\u2660'));
vect.add(new Card(2, '\u2660'));
vect.add(new Card(3, '\u2660'));
vect.add(new Card(8, '\u2660'));
vect.add(new Card(9, '\u2660'));
drawCards(vect);
这样,一切都很快。
在我要使用的第二种情况中:
我有另一个卡片矢量在代码中的另一个地方创建。我将该Vector发送到我的drawCards()函数。但它的工作进展缓慢。
drawCards(players[0].cards);
我的drawCards功能:
void drawCards(Vector<Card> myCards) {
myCardsLayout.removeAllViews();
for (Card card1 : myCards) {
final Card card = card1;
final ImageView image = new ImageView(this);
final String cardStr = card.cardToString();
Resources res = getResources();
int resID = res.getIdentifier(cardStr, "drawable", getPackageName());
image.setImageResource(resID);
image.setLayoutParams(selfLayoutParams);
image.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (myTurn) {
if (currentPlayCardsVector.contains(card)) {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(image.getWidth(), image.getHeight());
lp.setMargins(0, 0, 0, 0);
image.setLayoutParams(lp);
currentPlayCardsVector.remove(card);
} else {
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(image.getWidth(), image.getHeight());
lp.setMargins(0, 0, 0, 20);
image.setLayoutParams(lp);
currentPlayCardsVector.add(card);
}
} else {
Toast.makeText(getApplicationContext(), "Please wait for your turn", Toast.LENGTH_SHORT).show();
}
}
});
myCardsLayout.addView(image);
}
}
我想提一下,在开头绘制图像是可以的,但是当点击图像时,响应和移动图像的速度很慢(在第二种情况下)。
感谢。
答案 0 :(得分:0)
我不确定如何回答这个问题,但似乎你的方法2的性能可能会受到你放置代码的地方的影响。代码放置是开发中的关键因素。有一次,我的应用程序非常反应迟钝,然后我做了一个更改然后它运行得更快。此外,您可以尝试关闭未使用的后台服务,例如,如果您正在进行第二项活动,则完成()您的第一项活动。我希望有所帮助。