2013-02-26 4 views
0

Je suis un nouveau débutant dans android et je veux faire un programme simple qui détecte les coordonnées tactiles et dessiner un cercle et le chemin du toucher, je fais un programme simple qui dessine un cercle autour du toucher et suivre mais je peux toujours faire le chemin du toucher. Quand je commence le programme avec le chemin planter, quand je supprimer le chemin il fonctionne normal ...Toile dessiner le chemin dans android

public class MainActivity extends Activity { 

    float x = 0; 
    float y = 0; 
    LinearLayout layout; //declarea variabilor pentru desenarea cercului 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); //specificarea 
     layout = (LinearLayout)findViewById(R.id.layout); //gasirea id 
     layout.addView(new CustomView(MainActivity.this)); 
    } 

    public class CustomView extends View { //crearea unei mape pentru canvas 
     Bitmap mBitmap; 
     Paint paint; 
     Path path; 

     public CustomView(Context context) { 
     super(context); 
     mBitmap = Bitmap.createBitmap(640, 1024, Bitmap.Config.ARGB_8888); 
      paint = new Paint(); 
      path = new Path(); 
      paint.setColor(Color.BLUE);//culoare cercului desenat 
      paint.setStyle(Style.FILL); 
     } 

    protected void onDraw(Canvas canvas) {//desenarea cercului la atingere 
     super.onDraw(canvas); 
     canvas.drawPath(path,paint); 
     canvas.drawCircle(x, y, 25, paint); 
    } 

    public boolean onTouchEvent(MotionEvent event) { 

     int action = event.getAction(); 

     switch (action){ 
      case MotionEvent.ACTION_DOWN: 
       path.moveTo(event.getX(), event.getY()); 
       path.lineTo(event.getX(), event.getY()); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       x = event.getX(); 
       y = event.getY(); 
       path.lineTo(x, y); 
       invalidate(); 
       break; 
      case MotionEvent.ACTION_UP: 
       path.lineTo(event.getX(), event.getY()); 
       break; 
      case MotionEvent.ACTION_CANCEL: 
       break; 
      default: 
      break; 
     } 
     return true; 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 
+0

Où «x» et «y» sont-ils déclarés? Qu'est-ce qui se passe avec votre code et que devrait-il se passer? –

+0

x et y sont pour le centre du cercle qui est dessiner lorsque l'écran tactile, le programme doit détecter toucher et montrer une coordonnées de l'écran et dessiner un cercle autour du toucher et le chemin pour siwpe tactile – user2112285

+0

Je l'ai eu. J'ai demandé où 'x' et' y' sont déclarés, pas à quoi ils servent. Vous devez fournir un peu plus de détails sur le problème auquel vous êtes confronté. Vous n'avez pas expliqué ce qui se passe réellement lorsque vous exécutez votre code. Est-ce qu'un cercle est dessiné du tout? Est-ce qu'il bouge quand le toucher bouge? Comme c'est le cas, votre message n'est pas beaucoup mieux que "Voici mon code, ça ne marche pas, comment puis-je le réparer?" –

Répondre

0

Vous n'êtes pas initialisez path. Probablement, votre programme plante avec NullPointerException. Essayez d'ajouter ceci à l'intérieur du constructeur CustomView: si vous avez publié la sortie logcat d'un accident

path = new Path(); 

À l'avenir, lorsque vous envoyez des messages au sujet de votre plantage du programme Android, il serait très utile.

+0

thx beaucoup d'amis, il fait fonctionner l'application – user2112285

Questions connexes