6

我调整了https://github.com/daCapricorn/ArcMenu库以使其符合我的目的,并且运行良好。无论如何我可以像在 tumblr 应用程序中那样构建菜单,还是可以通过调整 ArcMenu 项目或https://github.com/siyamed/android-satellite-menu来构建菜单?我对用于创建样式的数学函数有疑问。

我正在寻找类似于 tumblr 应用程序动画的动画。

在此处输入图像描述

4

3 回答 3

3

尝试使用,弧形菜单

实现 RayMenu 并修改RayLayout

并使用您的特定坐标修改private static AnimationcreateExpandAnimation() 方法。

于 2013-09-23T16:29:25.230 回答
2

我在 iOS 中有很多方法可以做到这一点。在 iOS 中,我们有类似于 Android 的视图,我们可以指定坐标(视图框架)将它们放置在它们的超级视图中。

假设:

1)假设你有一个轨迹,即方程 x^2 + y^2 = c 的圆(提示:所有视图都在这个轨迹上,即所有视图的中心与这个圆重合)

2)您需要根据您需要的曲线和初始点(0,HEIGHT_OF_SCREEN)选择一个值C作为放置视图的说明点。

在此处输入图像描述

算法 :

int angularDisplacementBetweenEachView = 10; // 两个视图之间的距离(以弧度表示)
// X 按钮在屏幕上的坐标
int startPositionOfViewX = 0;
int startPositionOfViewY = HEIGHT_OF_SCREEN;
// 常数决定曲线
诠释 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(View currentView, int prevViewX, int prevViewY){

// 转换为极坐标 // 参考图

// 这也是虚拟圆的半径 浮动 r = sqrt(pow(x,2),pow(y,2)); 浮动 theta = atan(y,x);

//r & theta 是上一个菜单项的极坐标 浮动 theta2 = (angularDisplacementBetweenEachView + r*theta)/r;

// 转换回笛卡尔坐标 int x2 = r * cos (theta); int y2 = r * sin (theta);

返回新的矩形(x2,y2); }

于 2013-09-19T22:00:13.783 回答
0

试试这个弧菜单。你可以使用这个卫星菜单 https://github.com/ketanpatel25/android-satellite-menu-center

于 2013-09-24T08:51:11.820 回答