Voglio progettare un menu come questo.Menu radiale Android con clic del tasto?
Ho provato l'animazione ma non mantiene la posizione dei pulsanti.
se qualcuno ha fatto questo tipo di menu per favore guidami.
Qualsiasi aiuto sarà apprezzato.
Voglio progettare un menu come questo.Menu radiale Android con clic del tasto?
Ho provato l'animazione ma non mantiene la posizione dei pulsanti.
se qualcuno ha fatto questo tipo di menu per favore guidami.
Qualsiasi aiuto sarà apprezzato.
Penso Rotatory wheel in android che vi danno perfetta idea di creare questo tipo di widget. È anche utile per me. Controllare anche per This Example.
http://code.google.com/p/radial-menu-widget/
E 'quello che tutto ciò che serve .download il barattolo e integrarlo, come ad esempio sul link qui sopra
Recentemente ho creato questo menu circolare di aggiungere nel mio recente progetto. Sembra
Quello che vi serve è quello di creare una nuova vista e disegnare questo punto di vista, controllare gli input dell'utente (dove è a contatto), la progettazione di un meccanismo di feedback, per esempio, a mio avviso, se tocchi utente uno qualsiasi dei 5 archi, il colore di sfondo cambia in azzurro. Ecco il mio codice per 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();
}
Alcuni riferimenti che potrebbero essere necessari.
bitmap -> è un arraylist contenente immagini
arcToched [] -> è una matrice che definisce il fondo per l'arco, i valori di questa matrice booleana viene modificato in onTouchEvent metodo().
lineCore, smallCircleCore ..... sono vernici.
So che questo non è il modo migliore e non anche professionale. Ho creato questo menu secondo necessità. La sua scala non è in grado in un modo finché non si modificano i calcoli dell'angolo.
Questa visualizzazione è fortemente ispirata all'applicazione Catch Notes. L'unico problema che ho riscontrato nella creazione di questa vista è stato determinare l'arco toccato. L'unica animazione che ho usato qui è come ancora Catch Notes (quella in cui il menu circolare si estende un po 'più delle dimensioni date poi torna normale).
Gentilmente post intero classe :) – Jitendra
ho bisogno della stessa funzionalità. ma ho bisogno che questo menu dovrebbe scorrere anche come dialer ... per favore aiutatemi ... per favore, il menu – AnAndroid
sembra fantastico. potete inserire tutto il codice in modo che possa essere utile a tutti. –
Fare riferimento a questo link http://stackoverflow.com/questions/10222730/how-to-create-a-rotating-wheel-control – Bhavika
[Questo] (http://stackoverflow.com/questions/6857505/creating-a-circular-view-in-android) potrebbe aiutare. Controlla anche [questo esempio] (http://www.codeproject.com/Articles/146145/Android-3D-Carousel). –
Hai trovato la soluzione? –