Стиль меню дуги, например, в приложении tumblr для Android

Я изменил библиотеку https://github.com/daCapricorn/ArcMenu, чтобы она работала с моей целью, и это работает нормально. В любом случае, я могу создать такое меню, как в приложении tumblr, или это возможно, путем настройки проекта ArcMenu или https://github.com/siyamed/android-satellite-menu ? У меня есть сомнения относительно математических функций, которые будут применяться для создания стиля.

Я ищу анимацию, похожую на анимацию приложения tumblr.

Введите описание изображения здесь

Попробуйте использовать, Arc Menu

Реализовать RayMenu и изменить RayLayout

И измените метод private static Animation createExpandAnimation () `с вашей конкретной координатой.

Есть много способов сделать это в iOS. В iOS у нас есть Views, похожие на Android, и мы можем указать координаты (фрейм), чтобы поместить их в свой супервизор.

Предположения:

1) Предположим, что у вас есть локус, т.е. круг с уравнением x ^ 2 + y ^ 2 = c (Подсказка: все точки зрения находятся на этом локусе, т.е. центр всех точек зрения совпадает с этим кругом)

2) Вам нужно выбрать значение C в зависимости от требуемой кривой и начальной точки, которая равна (0, HEIGHT_OF_SCREEN) в качестве точки указания для размещения просмотров.

Введите описание изображения здесь

Алгоритм:

 Int angularDisplacementBetweenEachView = 10;  // расстояние между двумя видами в радианах 
 // координаты кнопки X на вашем экране
 Int startPositionOfViewX = 0;
 Int startPositionOfViewY = HEIGHT_OF_SCREEN;
 // константа для определения кривой
 Int C = 125; 

– (void) main () {// это обычно делается в виде контроллера

 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 (просмотр 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 (theta);
Int y2 = r * sin (theta);

Return new rect (x2, y2);
}

Попробуйте это для меню Arc. U можете использовать это меню для сателлитов https://github.com/ketanpatel25/android-satellite-menu-center