You're welcome :-)

A bonus would be to get rid of the following line somehow:
AbsoluteLayout.LayoutParams p = new AbsoluteLayout.LayoutParams(....);

because this creates many new objects while you scroll which have to
be garbage collected afterwards.

Good luck!

Peli
www.openintents.org
www.openintents.biz

On 10 Jan., 10:39, "kaushik sur" <[email protected]> wrote:
> hi Peli
>
> thank you very much for giving me the correct direction.
>
> regards
> Kaushik
>
> On Fri, Jan 9, 2009 at 7:58 PM, Peli <[email protected]> wrote:
>
> > Introduce new member variables of your class:
> > int mOffsetX;
> > int mOffsetY;
>
> > Then below you do something like:
>
> > if ( action == MotionEvent.ACTION_DOWN ) {
> >     System.out.println("X="+mCurX+"  y="+mCurY);
> >    this.setText("x: " + mCurX + ",y: " + mCurY );
>
> >     mOffsetX = mCurX - 10; // 10 was the initial coordinate
> >    mOffsetY = mCurY - 10;
>
> >   } else if ( action == MotionEvent.ACTION_MOVE ) {
> >     System.out.println("X="+mCurX+"  y="+mCurY);
> >    this.setText("x: " + mCurX + ",y: " + mCurY );
> >    AbsoluteLayout.LayoutParams p = new
> >    AbsoluteLayout.LayoutParams
> > (AbsoluteLayout.LayoutParams.WRAP_CONTENT,
> >      AbsoluteLayout.LayoutParams.WRAP_CONTENT,this.getScrollX()+
> > mCurX + mOffsetX,
> >      this.getScrollY()+mCurY + mOffsetY); //// Here you add the
> > offset values.
> >    this.setLayoutParams (p);
>
> >   }
>
> > I hope this helps as a pointer. Note that after you placed the object
> > to a new position, you have to remember the new coordinates (instead
> > of (10,10) where you started originally).
>
> > ACTION_DOWN is called when you click the mouse button, ACTION_MOVE is
> > called while you click and drag, and ACTION_UP is called when you
> > release the mouse button. Replace mouse by finger on the actual
> > device :-)
>
> > I hope this is what you meant.
>
> > Peli
> >www.openintents.org
>
> > On Jan 9, 2:46 pm, "kaushik sur" <[email protected]> wrote:
> > > hi
>
> > > Can you please illustrate the scenarios of the constants
> > > ACTION_MOVE,ACTION_DOWN,ACTION_UP ?
>
> > > regards
> > > Kaushik
>
> > > On Fri, Jan 9, 2009 at 6:22 PM, Peli <[email protected]> wrote:
>
> > > > what you have to do is, remember the coordinates that you get with the
> > > > ACTION_DOWN event.
>
> > > > Remember the distance (difference) between those coordinates and the
> > > > original coordinates of your image (call that offsetX and offsetY),
> > > > and subsequently in ACTION_MOVE always add those offset values.
>
> > > > Peli
>
> > > > On Jan 9, 11:36 am, "kaushik sur" <[email protected]> wrote:
> > > > > Hi Peli
>
> > > > > here i attach my code, to be added , i have ressolved the issue of
> > double
> > > > > image by getting rawX() value of the event , and setting my absolute
> > > > layout
> > > > > according to that.
> > > > > but here i get a unique problem, whenever i click the button and try
> > to
> > > > drag
> > > > > it, the mouse tip comes to a certain pixels above from the topleft
> > corner
> > > > of
> > > > > the button,like a offset distance,if you run the code on the emulator
> > u
> > > > wil
> > > > > find this problem.
> > > > > can anyone help to solve this?
>
> > > > > package com.google.android.samples.view.draganddrop;
>
> > > > > import android.app.Activity;
> > > > > import android.content.Context;
> > > > > import android.graphics.Canvas;
> > > > > import android.os.Bundle;
> > > > > import android.view.MotionEvent ;
> > > > > import android.view.View;
> > > > > import android.view.View.OnClickListener;
> > > > > import android.widget.AbsoluteLayout;
> > > > > import android.widget.Button;
> > > > > import android.widget.Toast;
>
> > > > > public class Drag_And_Drop extends Activity {
> > > > >  /** Called when the activity is first created. */
>
> > > > > �...@override
> > > > >  public void onCreate(Bundle icicle) {
> > > > >   super.onCreate(icicle);
>
> > > > >   MyView tx = new MyView(this);
> > > > >   tx.setText("Drag Me");
> > > > >   AbsoluteLayout l = new AbsoluteLayout(this);
>
> > > > >   AbsoluteLayout.LayoutParams p = new AbsoluteLayout.LayoutParams(
> > > > >     AbsoluteLayout.LayoutParams.WRAP_CONTENT,
> > > > >     AbsoluteLayout.LayoutParams.WRAP_CONTENT,10,10);
> > > > >   l.addView(tx,p);
> > > > >   setContentView(l);
>
> > > > >  }
>
> > > > >  class MyView extends Button
> > > > >  {
> > > > >   public MyView(Context c){
> > > > >    super(c);
>
> > > > >   }
>
> > > > >   @Override
> > > > >   public boolean dispatchTouchEvent(MotionEvent event) {
> > > > >    int    mCurX=(int)event.getRawX();
> > > > >    int mCurY=(int)event.getRawY();;
> > > > >    System.out.println("scrollx "+this.getScrollX());
> > > > >    int action = event.getAction();
> > > > >    if ( action == MotionEvent.ACTION_MOVE ) {
> > > > >     System.out.println("X="+mCurX+"  y="+mCurY);
> > > > >     this.setText("x: " + mCurX + ",y: " + mCurY );
> > > > >     AbsoluteLayout.LayoutParams p = new
>
> > AbsoluteLayout.LayoutParams(AbsoluteLayout.LayoutParams.WRAP_CONTENT,
> > > > >       AbsoluteLayout.LayoutParams.WRAP_CONTENT,this.getScrollX()+
> > mCurX,
> > > > >       this.getScrollY()+mCurY);
> > > > >     this.setLayoutParams (p);
>
> > > > >    }
> > > > >    return true;
> > > > >   }
>
> > > > >   @Override
> > > > >   public void draw(Canvas canvas) {
> > > > >    // TODO Auto-generated method stub
> > > > >    super.draw(canvas);
>
> > > > >   }
>
> > > > >  }
>
> > > > > }
>
> > > > > #####main.xml#####
>
> > > > > <?xml version=*"1.0"* encoding=*"utf-8"*?>
>
> > > > > <LinearLayout xmlns:android=*"
> >http://schemas.android.com/apk/res/android
> > > > "
> > > > > *
>
> > > > > 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"
> > > > > *
>
> > > > > />
>
> > > > > <Button
>
> > > > > android:id=*"@+id/button"
> > > > > *
>
> > > > > android:layout_width=*"fill_parent"
> > > > > *
>
> > > > > android:layout_height=*"wrap_content"
> > > > > *
>
> > > > > android:text=*"start transfer"
> > > > > *
>
> > > > > />
>
> > > > > </LinearLayout>
>
> > > > > regards
> > > > > Kaushik
>
> > > >  > On Thu, Jan 8, 2009 at 11:23 PM, Dan Raaka <[email protected]>
> > > > wrote:
>
> > > > > > Refer Launcher code in the source tree.
>
> > > > > > -M
>
> > > > > > On Jan 8, 8:13 am, "kaushik.siso" <[email protected]> wrote:
> > > > > > > hi
>
> > > > > > > i want to know how can i enbale Drag and drop feature in android.
> > > > > > > suppose i have a image,which are to be dragged and dropped on
> > another
> > > > > > > result and it will start a new activity.
> > > > > > > i seek your help to  get a head-start atleast.
>
> > > > > > > regards
> > > > > > > k...@sis
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to