Thanks guys. 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 14, 5:40 am, Per Sandström <[email protected]> wrote:
> Here is another bug in the code:
>
> if(i == 0) {
> static_x = event.getX();
> static_y = event.getY();
> i = 1;
> } else
> {
> static_x1 = event.getX();
> static_y1 = event.getY();
>
> }
> // want to draw a line at this stage after figuring out two
> screen
> touches have been performed ??
> if(i == 1) {
>
> As you can see, you set "i = 1" on the first time this function is
> called. Thus the second if-statement is always true. Add an "else"
> before the last "if"
>
> On Apr 14, 2:12 am, gandor <[email protected]> wrote:
>
> > Hi Folks,
>
> > 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
>
> > Thanks a ton
>
> > ----------------
> > <?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>
> > --------------
>
> > 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();
>
> > }
> > // want to draw a line at this stage after figuring out two
> > screen
> > touches have been performed ??
> > 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;
> > }
>
> > }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" 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-developers?hl=en
-~----------~----~----~----~------~----~------~--~---