¿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.
- cómo utilizar el componente DrawerLayoutAndroid para cajón de construcción en aplicaciones de reactividad nativa?
- ¿Cómo agregar un menú en un fragmento?
- ¿Es posible acallar (no sólo deshabilitar) un MenuItem en Android?
- Android añadiendo un submenú a un menuItem, donde es addSubMenu ()?
- Inflar ActionBarSherlock Menú definido en XML
Si alguien ha hecho este tipo de menú por favor guíame.
Cualquier ayuda será apreciada.
- Cajón deslizante aparecen en todas las actividades
- El mismo menú de opciones en todas las actividades de Android
- ActionBar con el icono y el texto en modo retrato
- Android - ActionBarSherlock - Establecer textcolor de texto en el menú
- Cómo copiar texto por programación en mi aplicación de Android?
- ¿Cómo extender una actividad base en android?
- Google Maps elimina el menú contextual de la ruta del marcador
- Tratando de ocultar y mostrar elementos de menú en la barra de acción
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
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