6

https://github.com/daCapricorn/ArcMenuライブラリを微調整して、目的から機能させるようにしましたが、正常に機能しています。tumblr アプリのようにメニューを作成できる方法はありますか、それとも ArcMenu プロジェクトまたはhttps://github.com/siyamed/android-satellite-menuを微調整することで可能ですか? スタイルを作成するために適用される数学関数に疑問があります。

tumblrアプリのアニメーションに似たアニメーションを探しています。

ここに画像の説明を入力

4

3 に答える 3

2

iOSでこれを行う方法はたくさんあります。iOS には、Android と同様のビューがあり、座標 (ビューのフレーム) を指定してそれらをスーパービューに配置できます。

仮定:

1)軌跡、つまり方程式 x^2 + y^2 = c の円があると仮定します (ヒント: すべてのビューはこの軌跡上にあります。つまり、すべてのビューの中心はこの円と一致します)。

2) 必要な曲線に応じて C の値を選択する必要があり、ビューを配置するための開始点として (0,HEIGHT_OF_SCREEN) である初期点を選択する必要があります。

ここに画像の説明を入力

アルゴリズム :

int angularDisplacementBetweenEachView = 10; // 2 つのビュー間の距離 (ラジアン)
// 画面の X ボタンの座標
int startPositionOfViewX = 0;
int startPositionOfViewY = HEIGHT_OF_SCREEN;
// 曲線を決める定数
int C = 125;

-(void) main (){ // これは通常、View Controller で行われます

for(int i = 1; i< menu_items.count; i++){
    Rect position = getCoordinatesForView(menu_item.get(i),menu_item.get(i-1).rect.x,menu_item.get(i-1).rect.y);
    addView(menu_item.get(i),position.x,position.y); 
}

}

// メソッドは、ビューが必要な座標 (x,y) を返します //置いた。 -(Rect)getCoordinatesForView(View currentView, int prevViewX, int prevViewY){

// 極座標に変換 // 図を参照

// これは仮想円の半径でもあります float r = sqrt(pow(x,2),pow(y,2)); float theta = atan(y,x);

//r & theta は前のメニュー項目の極座標です float theta2 = (angularDisplacementBetweenEachView + r*theta)/r;

// デカルト座標に戻す int x2 = r * cos (シータ); int y2 = r * sin (シータ);

新しい rect(x2,y2) を返します。 }

于 2013-09-19T22:00:13.783 に答える