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
-~----------~----~----~----~------~----~------~--~---