¿El android radial del menú con el tecleo del botón?

Quiero diseñar un menú como este.

He intentado la animación pero no retiene la posición de los botones.

Si alguien ha hecho este tipo de menú por favor guíame.

Cualquier ayuda será apreciada.

Introduzca aquí la descripción de la imagen

Creo Rotatorio rueda en Android que le dan idea perfecta acerca de la creación de este tipo de widget. También es útil para mí. También compruebe para este ejemplo.

Recientemente he creado este menú circular para agregar en mi proyecto reciente. Parece que Introduzca aquí la descripción de la imagen

Lo que necesitas es crear una nueva vista y dibujar esta vista, comprobar las entradas del usuario (donde está tocando), diseñar un mecanismo de retroalimentación, por ejemplo, en mi opinión, si el usuario toca cualquiera de los 5 arcos, los cambios de color de fondo A skyblue Aquí está mi código para 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(); } 

Alguna referencia que pueda necesitar.

Bitmap -> es un arraylist que contiene imágenes

ArcToched [] -> es una matriz que define el fondo para el arco, los valores de esta matriz booleana se modifica en el método onTouchEvent ().

LineCore, smallCircleCore ….. son pinturas.

Sé que esto no es la mejor manera y no profesional también. He creado este menú según la necesidad. No es escalable de una manera hasta que cambie los cálculos de ángulo.

Esta vista está muy inspirada en la aplicación Catch Notes. El único problema al que me enfrento al crear esta visión era determinar el arco tocado. La única animación que he usado aquí es como volver a capturar las notas (aquella en la que el menú circular se extiende un poco más que el tamaño dado luego vuelve normal).

http://code.google.com/p/radial-menu-widget/

Es lo que todo lo que necesita. Descargar el tarro e integrarlo como ejemplo en el enlace anterior

  • Cómo incluir un elemento de menú común en varios menús en el menú de Android xml?
  • Cómo hacer un menú transparente de lujo como el "menú compartido" en la galería de Android?
  • ¿Cómo actualizar un elemento de menú que se muestra en la barra de acción?
  • Cierre el teclado al desplazarse en la lista desplegable de autocompletetextview en Android
  • Android invalidateOptionsMenu () para API <11
  • No hay carpeta de menú en el proyecto de estudio de Android
  • Menú PROBLEMAS con algunos dispositivos Android 4.x
  • Android: Java: La descontinuación de SlidingDrawer
  • Android: muestra el menú de varias actividades
  • Cómo agregar menú a un diseño
  • Analizar el menú de Android del recurso XML a la lista de objetos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.