私はいくつかの問題を抱えています。
Q アイコン (Android ロゴと言うシンプルなアイコン) があり、それらを単一の星の中心 (アイコン) に対して星型トポロジーに配置し、Android キャンバスに接続するとします。
どうすればいいですか?
正確なリンクはありますか?
アルゴリズム情報はありますか?
基本的にやりたいことは、中心の周りに点を作成し、点にアイコンと中心を結ぶ線を与えることです。
円上に 2 次元の点を作成するには、コサイン/サインを使用します。
double angle;
point.x = offsetX + radius*Math.cos(angle);
point.y = offsetY + radius*Math.sin(angle);
接触ごとに適切な値で角度を増分し、このような点を配列またはリストに格納します。
描画に関しては、アイコンをそのポイントを中心にして描画し ( yourCanvas.drawBitmap()
)、中心点まで線を描画します ( yourCanvas.drawLine()
)。
public void starTopology(Canvas mCanvas,int noOfFriends,float centerX,float centerY,int radious) {
final double PI = 3.14;
final double MARGIN = (2*PI)/noOfFriends;
final double OFFSETX = centerX;
final double OFFSETY = centerY;
final int RADIUS = radious;
float pointXCoord = 0;
float pointYCoord = 0;
double NextPositionOnCircumference = MARGIN;
Paint myCustomizedBrush = new Paint();
myCustomizedBrush.setAntiAlias(true);
myCustomizedBrush.setColor(Color.WHITE);
for(int i= 0; i < noOfFriends; i++){
pointXCoord = (float) (OFFSETX + RADIUS * Math.cos(NextPositionOnCircumference));
pointYCoord = (float) (OFFSETY + RADIUS * Math.sin(NextPositionOnCircumference));
NextPositionOnCircumference += MARGIN;
mCanvas.drawLine((float)OFFSETX, (float)OFFSETY, pointXCoord, pointYCoord, myCustomizedBrush);
pointXCoord -= 10;
pointYCoord -= 10;
mCanvas.drawBitmap(Utility.FriendProfilePic.get(i), pointXCoord, pointYCoord, null);
}
mCanvas.drawCircle((float)OFFSETX, (float)OFFSETY, 5, myCustomizedBrush);
}