2012-05-22 7 views
0

Je veux dessiner des lignes sur l'écran mais mon application dessine seulement en pointillé. Alors, que dois-je ajouter dans mon code?android line draw

List<Point> points = new ArrayList<Point>(); 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context); 
    setFocusable(true); 
    setFocusableInTouchMode(true); 

    this.setOnTouchListener(this); 

    paint.setColor(Color.BLUE); 
    paint.setAntiAlias(true); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    for (Point point : points) { 
     canvas.drawCircle(point.x, point.y, 5, paint); 
     // Log.d(TAG, "Painting: "+point); 
    } 
} 

public boolean onTouch(View view, MotionEvent event) { 
    // if(event.getAction() != MotionEvent.ACTION_DOWN) 
    // return super.onTouchEvent(event); 
    Point point = new Point(); 
    point.x = event.getX(); 
    point.y = event.getY(); 
    points.add(point); 
    invalidate(); 
    Log.d(TAG, "point: " + point); 
    return true; 
    } 
} 

class Point 
{ 
    float x, y; 
    @Override 
    public String toString() { 
     return x + ", " + y; 
    } 
} 
+0

Cochez ceci: [Comment dessiner une ligne dans android] (http://stackoverflow.com/questions/3616676/how-to-draw-a-line-in-android) il peut vous aider. – Sajmon

+0

L'une des réponses a-t-elle fonctionné pour vous? –

Répondre

0

Modifier

Utilisez drawLine ou drawPath au lieu de drawCircle.

Je vous suggère de jeter un oeil sur le Fingerpaint exemple de la API Demos

+0

Cela ne devrait pas être une réponse, mais un commentaire. –

+0

a modifié ma réponse –

0
  1. Utilisez drawLine bewteen 2 ensembles de points
  2. Pour les lignes plus douces, obtenir tous les événements historiques OnTouch et de les traiter d'abord
  3. pour accélérer/lisse, annule seulement les rect où les points ont change

En savoir plus here