2014-02-03 3 views
0

Я пытаюсь просто нарисовать путь в Android, и я сталкиваюсь с неудачной ситуацией на пути, не тянущемся по неизвестным причинам. Когда я пытаюсь просто рисовать линию, он отлично работает. Когда я пытаюсь запустить код ниже, ничего не получается, но программа все еще работает.Android - Путь не нарисован

Код:

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Path; 
import android.graphics.Point; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.view.View; 

public class GameView extends View { 
    Paint p = new Paint(); 
    //int initX; 
    //int initY; 
    //int endX; 
    //int endY; 
    Path path = new Path(); 

    public GameView(Context context) { 
     super(context); 
     init(); 
    } 

    public GameView(Context context, AttributeSet as) { 
     super(context, as); 
     init(); 
    } 

    private void init() { 
     /* one-time initialization stuff */ 
     setBackgroundResource(R.drawable.space); 
    } 


    public void onDraw(Canvas c) { 
     /* called each time this View is drawn */ 

     p.setColor(Color.RED); 
     p.setStrokeWidth(2); 
     //c.drawLines(pts, p); 
     c.drawPath(path, p); 
     path.close(); 
    } 

    public boolean onTouchEvent(MotionEvent e) { 

     if (e.getAction() == MotionEvent.ACTION_DOWN) { 
      path.moveTo(e.getX(), e.getY()); 
      //path.lineTo(e.getX(), e.getY()); 
      invalidate(); // force redraw 
      return true; 
     } 

     else if (e.getAction() == MotionEvent.ACTION_MOVE){ 
      path.lineTo(e.getX(), e.getY()); 
      path.moveTo(e.getX(), e.getY()); 
      invalidate(); // force redraw 
      return true; 
     } 

     else if (e.getAction() == MotionEvent.ACTION_UP){ 
      path.lineTo(e.getX(), e.getY()); 
      invalidate(); // force redraw 
      return true; 
     } 
      return false; 
    } 
} 

Кто-нибудь есть какие-нибудь идеи? Спасибо заранее.

ответ

0

Что вам нужно, это ваш код не указывает начало и конец вашего пути и нуждаются в декларации на холст, чтобы подготовить его для рисования изменить метод onDraw как:

public void onDraw(Canvas c) { 
    /* called each time this View is drawn */ 

    p.setStyle(Paint.Style.FILL); 
    p.setColor(Color.TRANSPARENT); 
    c.drawPaint(p); 
    for (int i = 50; i < 100; i++) { 
     path.moveTo(i, i-1); 
     path.lineTo(i, i); 
} 
    p.setColor(Color.RED); 
    p.setStrokeWidth(2); 
    //c.drawLines(pts, p); 
    path.close(); 
    p.setStrokeWidth(3); 
    p.setPathEffect(null); 
    p.setColor(Color.BLACK); 
    p.setStyle(Paint.Style.STROKE); 
    c.drawPath(path, p); 
} 

добавить некоторые стили из моего старого кода не стесняйтесь удалять или изменять его, кормить меня в любых очевидных вещах

Смежные вопросы