ポイント配列とパネルがあります。getWidth()パネルに基づいています。手札にあるカードを想像してみてくださいHAND_CARD_WIDTH。このループの目的は、パネル全体に均等にポイントを設定することです。ただし、カードがパネルの外に出てしまうため、見栄えが非常に悪くなります。私がやりたいのは、手札に何枚のカードがあっても、パネルの両側に小さな余白を与えることです。
これがコードです
int iteration = 1;
int limiter = getWidth();
int slice = (limiter/(handsize+1));
while (points.size() < handsize) {
int x = slice*(iteration++);
x -= HAND_CARD_WIDTH/2;
points.add(new Point(x, y));
}
x基本的には、左端を少なくとも20、右端を最大にしたいと考えていgetWidth() - 20 - HAND_CARD_WIDTHます。また、カードを等間隔に配置したいのですが... 正しい方程式が思い浮かびません (残念ながら、この点に到達するのは偉業でした..)。
ありがとう、回答(2つすべて)に基づいて、私が行ったものは次のとおりです。
if((int)points.get(0).getX() < margin){
int boost = Math.abs(margin - (int)points.get(0).getX());
slice = (boost*2)/handsize;
for(Point p : points){
p.x += boost;
boost -= slice;
}
}