gpt4 book ai didi

android - 带有按钮单击的径向菜单android?

转载 作者:IT老高 更新时间:2023-10-28 22:22:51 25 4
gpt4 key购买 nike

我想设计这样的菜单。

我尝试过动画,但它不保留按钮的位置。

如果有人做过这种类型的菜单,请指导我。

任何帮助将不胜感激。

enter image description here

最佳答案

我最近创建了这个圆形菜单以添加到我最近的项目中。看起来像 enter image description here

您需要创建一个新 View 并绘制此 View ,检查用户输入(他正在触摸的位置),设计一个反馈机制,例如,在我看来,如果用户触摸了 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[] -> 是一个定义圆弧背景的数组,这个 bool 数组的值在 onTouchEvent() 方法中被修改。

lineCore、smallCircleCore .....都是颜料。

我知道这不是最好的方法,也不专业。我根据需要创建了这个菜单。在您更改角度计算之前,它无法以某种方式缩放。

此 View 深受 Catch Notes 应用程序的启发。我在创建这个 View 时遇到的唯一麻烦是确定触摸的弧线。我在这里使用的唯一动画就像 Catch Notes 一样(圆形菜单扩展得比给定大小多一点,然后恢复正常)。

关于android - 带有按钮单击的径向菜单android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12577200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com