Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to draw line during runtime in a custom view?
    primarykey
    data
    text
    <p>I am trying to draw a line using on touch method.</p> <p>I want that when user touches a particular point and then drags the finger, the line should be drawn.</p> <p>using <code>canvas.drawLine(_,_,_,_,_ );</code> is not drawing lines. as <code>onDraw</code> works only once.</p> <p>my main question is "how to draw a line during runtime without using <code>onDraw()</code>? "</p> <p>edit :</p> <pre><code>public class DrawView extends View { int radius=30; int initialX =0; int initialY=0; int finalX=0; int finalY=0; private Point currentPoint; private int index; static ArrayList&lt;Point&gt; pointListDrawView = new ArrayList&lt;Point&gt;(); public DrawView(Context context, ArrayList&lt;Point&gt; pointList) { super(context); // TODO Auto-generated constructor stub this.setBackgroundColor(Color.WHITE); //pointListDrawView = pointList; pointListDrawView.add(pt(600,200)); pointListDrawView.add(pt(500,200)); pointListDrawView.add(pt(400,200)); pointListDrawView.add(pt(400,300)); pointListDrawView.add(pt(400,400)); pointListDrawView.add(pt(500,400)); pointListDrawView.add(pt(400,400)); pointListDrawView.add(pt(400,500)); pointListDrawView.add(pt(400,600)); pointListDrawView.add(pt(500,600)); pointListDrawView.add(pt(600,600)); } private Point pt(int i, int j) { // TODO Auto-generated method stub Point P = new Point(i, j); return P ; } Paint paint= new Paint(); Canvas universalCanvas; @Override protected void onDraw(final Canvas canvas) { paint.setColor(Color.GREEN); paint.setStrokeWidth(10); for(int i=0; i&lt;pointListDrawView.size();i++){ canvas.drawCircle(pointListDrawView.get(i).x, pointListDrawView.get(i).y, 15, paint); } universalCanvas = canvas; // drawLines(canvas); } @Override public boolean onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub int i =0; switch (event.getAction()){ case MotionEvent.ACTION_DOWN: if(((event.getX()&gt;pointListDrawView.get(i).x-radius) &amp;&amp; (event.getX()&lt;pointListDrawView.get(i).x+radius) &amp;&amp; (event.getY()&gt;pointListDrawView.get(i).y-radius) &amp;&amp; (event.getY()&lt;pointListDrawView.get(i).y+radius))) { Log.d("touch", "touched correct point"); initialX=pointListDrawView.get(i).x; initialY=pointListDrawView.get(i).y; } else{ Log.d("touch", "touch discarded"); return false; } break; case MotionEvent.ACTION_MOVE: universalCanvas.drawLine(initialX, initialY, event.getX(), event.getY(), paint); break; case MotionEvent.ACTION_UP: if(((event.getX()&gt;pointListDrawView.get(i+1).x-radius) &amp;&amp; (event.getX()&lt;pointListDrawView.get(i+1).x+radius) &amp;&amp; (event.getY()&gt;pointListDrawView.get(i+1).y-radius) &amp;&amp; (event.getY()&lt;pointListDrawView.get(i+1).y+radius))) { finalX=pointListDrawView.get(i+1).x; finalY=pointListDrawView.get(i+1).y; universalCanvas.drawLine(initialX,initialY, finalX,finalY, paint); Log.d("touch", "line drawn"); return true; } else { Log.d("touch", "correct point touched and discarded"); return false; } default: break; } invalidate(); return true; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload