Thanks. Yes now it works. Had to use event.getAction and draw
method.

package <>.DrawPoints;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.LinearLayout;
import android.widget.TextView;

public class DrawPoints extends Activity implements OnTouchListener{
        static int i = 0;
         float x = 200;
         float y = 200;
         float x1 = 0;
         float y1 = 0;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //View topLayout = this.findViewById(R.id.layout_id);
        LinearLayout layMain =  (LinearLayout)this.findViewById
(R.id.layout_id);
        // register for events for the view, previously
        //topLayout.setOnTouchListener((OnTouchListener) this);
        layMain.setOnTouchListener((OnTouchListener) this);
        layMain.addView(new Mens(this));

}

  // the following callback is called when touch event on screen
happens
        @Override
        public boolean onTouch(View v, MotionEvent event) {
                String tag = null;

                switch (event.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                {
                        x = event.getX();
                        y = event.getY();
                }
            }
               return false;
        }

        public class Mens extends View {

             public Mens(Context context)
             {
                  super(context);

             }

             protected void onDraw(Canvas canvas)
            {
                  Paint p = new Paint();
                  p.setColor(Color.RED);

                  canvas.drawLine(15, 15, x , y, p);
                  invalidate();
            }

     }

}

On Apr 13, 10:33 pm, Raphael <[email protected]> wrote:
> A couple suggestions:
>
> - don't make your x/y fields static.
> - in onTouch, test that MotionEvent.getAction() is ACTION_DOWN.
> - to draw you should create a custom View class and override the
> onDraw method. See ApiDemos or the LunarLander samples for a start.
>
> R/
>
> On Mon, Apr 13, 2009 at 5:14 PM, gandor <[email protected]> wrote:
>
> > Hi,
>
> > Want to draw a line when I touch screen at two points.
> > I can see OnTouch been invoked but after than everything breaks looks,
> > the application crashes
>
> > I am using drawLine in Canvas.
> > Please let me know what I am doing wrong
>
> > package <>.DrawPoints;
>
> > import android.app.Activity;
> > import android.content.Context;
> > import android.graphics.Canvas;
> > import android.graphics.Color;
> > import android.graphics.Paint;
> > import android.os.Bundle;
> > import android.util.Log;
> > import android.view.MotionEvent;
> > import android.view.View;
> > import android.view.View.OnTouchListener;
> > import android.widget.TextView;
>
> > public class DrawPoints extends Activity implements OnTouchListener{
> >        static int i = 0;
> >        static float static_x = 0;
> >        static float static_y = 0;
> >        static float static_x1 = 0;
> >        static float static_y1 = 0;
>
> >    /** Called when the activity is first created. */
> >   �...@override
> >    public void onCreate(Bundle savedInstanceState) {
> >        super.onCreate(savedInstanceState);
> >        setContentView(R.layout.main);
> >        View topLayout = this.findViewById(R.id.layout_id);
> >        // register for events for the view, previously
> >        topLayout.setOnTouchListener((OnTouchListener) this);
>
> > }
> >  // the following callback is called when touch event on screen
> > happens
> >       �...@override
> >        public boolean onTouch(View v, MotionEvent event) {
> >                String tag = null;
>
> >                if(i == 0) {
> >                static_x = event.getX();
> >                static_y = event.getY();
> >                i = 1;
> >                } else
> >                {
> >                        static_x1 = event.getX();
> >                        static_y1 = event.getY();
>
> >                }
>
> >               if(i == 1) {
> >               Paint p = new Paint();
> >               p.setColor(Color.WHITE);
> >           p.setStyle(Paint.Style.STROKE);
> >          Canvas canvas = new Canvas();
> >           canvas.drawColor(Color.BLUE);
>
> >           canvas.drawLine(static_x, static_y, static_x1, static_y1,
> > p);
> >                i = 0;
> >        }
>
> >               return false;
> >        }
>
> >     }
>
> > <?xml version="1.0" encoding="utf-8"?>
> > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/
> > android"
> >    android:id="@+id/layout_id"
> >    android:orientation="vertical"
> >    android:layout_width="fill_parent"
> >    android:layout_height="fill_parent"
> >    >
> > <TextView
> >    android:layout_width="fill_parent"
> >    android:layout_height="wrap_content"
> >    android:text="@string/hello"
> >    />
> > </LinearLayout>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to