[android-developers] Re: Handling touch events for dragging content when changing the orientation of the screen

2011-01-27 Thread JAlexoid (Aleksandr Panzin)
I didn't need to do it myself, but given that you know the angle and
you know the drag vector, you can use a rotation matrix for that.
This Wikipedia segment should help you out, it even comes with a
picture:
http://en.wikipedia.org/wiki/Rotation_matrix#Rotations_in_two_dimensions

On 27 янв, 03:00, Dave Bryson  wrote:
> Thanks for the response!  No, my code is not rotating the drag
> direction.  I'm primary rotating the canvas the map is drawn on.  I'm
> not sure *how* to rotate the axes used by the touch event.  Any
> pointers on how to do this would be greatly appreciated!
>
> Thanks again,
> Dave
>
> On Jan 26, 8:51 am, "JAlexoid (Aleksandr Panzin)" 
> wrote:
>
> > You have to rotate the drag direction vector as well as canvas.
> > Even without looking at your code, the actual drawing code probably
> > doesn't translate the dragging direction in accordance with the
> > direction of the device.
>
> > On 26 янв, 08:13,DaveBryson wrote:
>
> > > I have a map application using an in-house map engine on Android. I'm
> > > working on a rotating Map view that rotates the map based on the
> > > phone's orientation using the Sensor Service. All works fine with the
> > > exception of dragging the map when the phone is pointing other than
> > > North. For example, if the phone is facing West, dragging the Map up
> > > still moves the Map to the South versus East as would be expected.  I
> > > assume translating the canvas is one possible solution but I'm
> > > honestly not sure the correct way to do this to swap the axes without
> > > disrupting the coordinate system needed by the map tiles.
>
> > > Here is the code I'm using to rotate the Canvas:
>
> > > public void dispatchDraw(Canvas canvas)
> > > {
> > >     canvas.save(Canvas.MATRIX_SAVE_FLAG);
> > >     // mHeading is the orientation from the Sensor
> > >     canvas.rotate(-mHeading, origin[X],origin[Y]);
>
> > >     mCanvas.delegate = canvas;
> > >     super.dispatchDraw(mCanvas);
> > >     canvas.restore();
>
> > > }
>
> > > What is the best approach to make dragging the map consistent
> > > regardless of the phones orientation? The sensormanager has a
> > > "remapcoordinates()" method but it's not clear to me exactly how to
> > > use it.  I've searched the web and posted to StackOverflow to try and
> > > figure this out...no luck so far.  Any pointers would be greatly
> > > appreciated!  Thanks.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Handling touch events for dragging content when changing the orientation of the screen

2011-01-26 Thread Dave Bryson
Thanks for the response!  No, my code is not rotating the drag
direction.  I'm primary rotating the canvas the map is drawn on.  I'm
not sure *how* to rotate the axes used by the touch event.  Any
pointers on how to do this would be greatly appreciated!

Thanks again,
Dave

On Jan 26, 8:51 am, "JAlexoid (Aleksandr Panzin)" 
wrote:
> You have to rotate the drag direction vector as well as canvas.
> Even without looking at your code, the actual drawing code probably
> doesn't translate the dragging direction in accordance with the
> direction of the device.
>
> On 26 янв, 08:13,DaveBryson wrote:
>
>
>
> > I have a map application using an in-house map engine on Android. I'm
> > working on a rotating Map view that rotates the map based on the
> > phone's orientation using the Sensor Service. All works fine with the
> > exception of dragging the map when the phone is pointing other than
> > North. For example, if the phone is facing West, dragging the Map up
> > still moves the Map to the South versus East as would be expected.  I
> > assume translating the canvas is one possible solution but I'm
> > honestly not sure the correct way to do this to swap the axes without
> > disrupting the coordinate system needed by the map tiles.
>
> > Here is the code I'm using to rotate the Canvas:
>
> > public void dispatchDraw(Canvas canvas)
> > {
> >     canvas.save(Canvas.MATRIX_SAVE_FLAG);
> >     // mHeading is the orientation from the Sensor
> >     canvas.rotate(-mHeading, origin[X],origin[Y]);
>
> >     mCanvas.delegate = canvas;
> >     super.dispatchDraw(mCanvas);
> >     canvas.restore();
>
> > }
>
> > What is the best approach to make dragging the map consistent
> > regardless of the phones orientation? The sensormanager has a
> > "remapcoordinates()" method but it's not clear to me exactly how to
> > use it.  I've searched the web and posted to StackOverflow to try and
> > figure this out...no luck so far.  Any pointers would be greatly
> > appreciated!  Thanks.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en


[android-developers] Re: Handling touch events for dragging content when changing the orientation of the screen

2011-01-26 Thread JAlexoid (Aleksandr Panzin)
You have to rotate the drag direction vector as well as canvas.
Even without looking at your code, the actual drawing code probably
doesn't translate the dragging direction in accordance with the
direction of the device.

On 26 янв, 08:13, Dave Bryson  wrote:
> I have a map application using an in-house map engine on Android. I'm
> working on a rotating Map view that rotates the map based on the
> phone's orientation using the Sensor Service. All works fine with the
> exception of dragging the map when the phone is pointing other than
> North. For example, if the phone is facing West, dragging the Map up
> still moves the Map to the South versus East as would be expected.  I
> assume translating the canvas is one possible solution but I'm
> honestly not sure the correct way to do this to swap the axes without
> disrupting the coordinate system needed by the map tiles.
>
> Here is the code I'm using to rotate the Canvas:
>
> public void dispatchDraw(Canvas canvas)
> {
>     canvas.save(Canvas.MATRIX_SAVE_FLAG);
>     // mHeading is the orientation from the Sensor
>     canvas.rotate(-mHeading, origin[X],origin[Y]);
>
>     mCanvas.delegate = canvas;
>     super.dispatchDraw(mCanvas);
>     canvas.restore();
>
> }
>
> What is the best approach to make dragging the map consistent
> regardless of the phones orientation? The sensormanager has a
> "remapcoordinates()" method but it's not clear to me exactly how to
> use it.  I've searched the web and posted to StackOverflow to try and
> figure this out...no luck so far.  Any pointers would be greatly
> appreciated!  Thanks.

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en