带有按钮单击的径向菜单android? [关闭]
Posted
技术标签:
【中文标题】带有按钮单击的径向菜单android? [关闭]【英文标题】:Radial menu android with button click? [closed] 【发布时间】:2012-09-16 15:08:48 【问题描述】:我想设计这样的菜单。
我尝试过动画,但它不保留按钮的位置。
如果有人做过这种类型的菜单,请指导我。
任何帮助将不胜感激。
【问题讨论】:
我认为Rotatory wheel in android 为您提供了创建此类小部件的完美想法。它对我也有帮助。还要检查This Example. 参考此链接***.com/questions/10222730/… This 可以提供帮助。还要检查this example。 找到解决办法了吗? 在这方面需要一些帮助.. 【参考方案1】:我最近创建了这个圆形菜单以添加到我最近的项目中。看起来像
您需要创建一个新视图并绘制此视图,检查用户输入(他正在触摸的位置),设计一个反馈机制,例如,在我看来,如果用户触摸了 5 个弧中的任何一个,背景颜色变为天蓝色。这是我的 onDrawMethod 代码。
protected void onDraw(Canvas canvas)
// TODO Auto-generated method stub
px = getMeasuredWidth()/2;
py = getMeasuredHeight();
initial = 144;
finalangle = 252;
centerCircleradius = 30;
middleCircleRadius = 140;
int init, fina;
init = 160;
fina = 360;
finalOVal.set(px-middleCircleRadius-4, py-middleCircleRadius-4, px+middleCircleRadius+4, py+middleCircleRadius+4);
middleOval.set(px-middleCircleRadius, py-middleCircleRadius, px+middleCircleRadius, py+middleCircleRadius);
while(init<fina)
circlePaint.setColor(colors[i]);
canvas.drawArc(finalOVal,init,10,false, circlePaint);
i++;
if(i>=colors.length)
i=0;
init = init + 10;
canvas.drawArc(middleOval, 180, 180, false, pencil);
midInitial = 180;
i=0;
//Creating the first Arc
if(arcTouched[0])
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
else
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
canvas.drawBitmap(bitmap.get(0), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[1])
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
else
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
canvas.drawBitmap(bitmap.get(1), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[2])
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
else
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
canvas.drawBitmap(bitmap.get(2), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
//Creatring the second Arc
if(arcTouched[3])
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
else
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
canvas.drawBitmap(bitmap.get(3), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
midInitial+=36;
if(arcTouched[4])
canvas.drawArc(middleOval, midInitial, 36, true, arcTouchedBack);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
else
canvas.drawArc(middleOval, midInitial, 36, true, middleCircleBody);
canvas.drawArc(middleOval, midInitial, 36, true, pencil);
canvas.drawBitmap(bitmap.get(4), null, (putBitmapTo(midInitial, 36, 140, px, py)), null);
canvas.drawCircle(px, py-10, 40, pencil);
canvas.drawCircle(px, py-10, 39, smallCircleCore);
canvas.drawCircle(px, py-10, 35, bigArc);
canvas.drawCircle(px, py-10, 20, smallCircleCore);
canvas.drawCircle(px, py-10, 15, bigArc);
canvas.drawLine(px-8, py-10, px+8, py-10, lineCore);
canvas.save();
您可能需要的一些参考资料。
bitmap -> 是一个包含图片的数组列表
arcToched[] -> 是一个定义圆弧背景的数组,这个布尔数组的值在 onTouchEvent() 方法中被修改。
lineCore、smallCircleCore .....都是颜料。
我知道这不是最好的方法,也不专业。我根据需要创建了这个菜单。在您更改角度计算之前,它无法以某种方式缩放。
此视图深受 Catch Notes 应用程序的启发。我在创建这个视图时遇到的唯一麻烦是确定触摸的弧线。我在这里使用的唯一动画就像 Catch Notes 一样(圆形菜单扩展得比给定大小多一点,然后恢复正常)。
【讨论】:
请全班发帖 :) 我需要相同的功能。但我需要这个菜单也应该滚动。意味着像拨号器..请帮助我..请 菜单看起来棒极了。你能把整个代码放上去,这样对所有人都有帮助吗? 请在此处查看此问题。我在这个问题中提供了完整的代码。 ***.com/questions/12579224/… @Paras 干得好,我建议您将其添加到您的 Github 帐户中,以便您和其他程序员可以分叉和更新它。以上是关于带有按钮单击的径向菜单android? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
带有按钮的 Eclipse android 主菜单启动新活动(IES)
如何处理后退按钮android以退出应用程序并在首页中打开时关闭本机导航侧菜单