Autore Topic: Sovrapporre in canvas più cerchi  (Letto 898 volte)

Offline sirtraco

  • Utente junior
  • **
  • Post: 92
  • Respect: 0
    • Mostra profilo
Sovrapporre in canvas più cerchi
« il: 16 Febbraio 2013, 15:41:02 CET »
0
Qualcuno può spiegarmi come fare a disegnare in canvas un cerchio dentro un altro cerchio?

Offline fabio80s

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus 7, Samsung Galaxy S2
  • Play Store ID:
    FABIO+SARACINO
  • Sistema operativo:
    Windows 7
Re:Sovrapporre in canvas più cerchi
« Risposta #1 il: 16 Febbraio 2013, 17:29:33 CET »
0
Ciao, potresti fare più chiamate al metodo drawCircle di Canvas, con raggio progressivamente più piccolo (o più grande) e centro fissato  ;-)

Offline sirtraco

  • Utente junior
  • **
  • Post: 92
  • Respect: 0
    • Mostra profilo
Re:Sovrapporre in canvas più cerchi
« Risposta #2 il: 17 Febbraio 2013, 12:16:57 CET »
0
Ho creato una classe di nome CustomView che estende la classe View, quindi nel metodo onDraw sono riuscito a disegnare con i metodi canvas i cerchi, adesso ho un altro problema...provandolo sul simulatore i cerchi vengono spixxellati...mentre sul mio S3 viene troppo piccolo come gli posso dare una misura che vada bene per ogni schermo???

Post unito: 18 Febbraio 2013, 19:00:41 CET
allora sono riuscito a disegnare per bene il bersaglio con il seguente codice

Codice (Java): [Seleziona]
import android.content.Context;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;



public class CustomView extends View{
        Paint white;
        Paint red;
        Paint blu;
        Paint black;
        Paint yellow;
        int w,h,bw,bh;
        float xPos = 0;
    float yPos = 0;
        int px=-1,py=-1;
        public CustomView(Context context, AttributeSet attrs) {
                super(context);
                white = new Paint();
                red = new Paint();
                blu = new Paint();
                black = new Paint();
                yellow = new Paint();
                //mPaint.setAntiAlias(true);
                white.setAntiAlias(true);
                white.setAntiAlias(true);
                red.setAntiAlias(true);
                blu.setAntiAlias(true);
                black.setAntiAlias(true);
                yellow.setAntiAlias(true);
                white.setColor(Color.WHITE);
                red.setColor(Color.RED);
                blu.setColor(Color.rgb(0, 178, 238));
                black.setColor(Color.BLACK);
                yellow.setColor(Color.YELLOW);
        }
        protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                super.onDraw(canvas);
                if(px==-1&&py==-1){ // se non abbiamo ancora settato le coordinate, posizioniamo la bmp al centro
            px=w/2-bw/2; //metà della larghezza view, meno metà della figura
            py=h/2-bh/2; //metà dell'altezza view, meno metà della figura
                }
                canvas.drawCircle(px+(bw/2), py+(bh/2), py, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-2, white);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-20, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-22, white);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-43, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-45, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-65, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-67, white);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-69, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-89, blu);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-109, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-111, blu);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-131, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-133, red);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-153, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-155, red);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-175, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-177, yellow);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-197, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-199, yellow);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-219, black);
                canvas.drawCircle(px+(bw/2), py+(bh/2), py-221, yellow);
                canvas.drawCircle(px+(bw/2), py+(bh/2), 3, black);
        }
       
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        //registriamo le dimensioni della view
        w=MeasureSpec.getSize(widthMeasureSpec);
        h=MeasureSpec.getSize(heightMeasureSpec);
        setMeasuredDimension(w,h);
        }

}
ora devo dare all'utente la possibilità di segnare i punti. Io vorrei che l'utente quando tocca lo schermo (bersaglio) compare un puntino che lo può muovere sul bersaglio e appena rilascia il dito rimane dove ha scelto di lasciarlo, qual'è il metodo per gestire il touch? devo metterlo nella classe precedente?
« Ultima modifica: 18 Febbraio 2013, 19:00:41 CET da sirtraco, Reason: Merged DoublePost »