Historical data for motion events helped! Thank you Blake!

On Sep 19, 9:05 am, "loril...@gmail.com" <loril...@gmail.com> wrote:
> Will it not just move the element as I move my finger on the screen. I
> want to draw the element at all positions where my finger has touched
> so that I can see a continuous drawing.
>
> Let me know if I have misunderstood.
>
> On Sep 19, 3:03 am, Dianne Hackborn <hack...@android.com> wrote:
>
> > You don't need the history to do smooth tracking.  The history gives you all
> > of the points between this in the last motion event...  but when tracking
> > you always want to show your object at the most recent reported position, so
> > the history is irrelevant.
>
> > The problem with the code is that it is trying to draw in to mCanvas
> > directly.  The view hierarchy is update-based; you need to update the state
> > and then invalidate the view drawing it to show the new state.  Even if you
> > could draw to the Canvas outside of an update, the code here would be broken
> > because it would just leave a trail of bitmaps drawn at various positions
> > without erasing the previous one.  (Though I guess it is doing an
> > invalidate() after drawing the bitmap, so you'd end up with the bitmap being
> > briefly drawn and then erased as the invalidate is executed.)
>
> > Anyway, just store the new position of the bitmap, call invalidate(), and
> > then in your onDraw() draw the bitmap at the current position.
>
> > On Sun, Sep 18, 2011 at 7:20 AM, blake <blake.me...@gmail.com> wrote:
> > > If you look at the sample code in the Google documents you'll see that
> > > motion events have history.  You'll need to use it to get a smooth
> > > trace
> > > -Blake
> > > Programming Android, FTW
>
> > > On Sep 18, 5:20 am, "loril...@gmail.com" <loril...@gmail.com> wrote:
> > > > I want to let a user smoothly draw elements with his finger and avoid
> > > > any lags as follows:
>
> > > > public boolean onTouchEvent(MotionEvent event) {
> > > >                         float x = event.getX();
> > > >                         float y = event.getY();
>
> > > >                         switch (event.getAction()) {
> > > >                         case MotionEvent.ACTION_DOWN:
> > > >                                 mCanvas.drawBitmap(primitive, x, y,
> > > mPaint);
>
> > > >                                 invalidate();
> > > >                                 break;
> > > >                         case MotionEvent.ACTION_MOVE:
> > > >                                 mCanvas.drawBitmap(primitive, x, y,
> > > mPaint);
>
> > > >                                 invalidate();
> > > >                                 break;
> > > >                         case MotionEvent.ACTION_UP:
> > > >                                 mCanvas.drawBitmap(primitive, x, y,
> > > mPaint);
>
> > > >                                 invalidate();
> > > >                                 break;
> > > >                         }
> > > >                         return true;
> > > >                 }
> > > >         }
>
> > > > Using android SDK I find onTouchEvent is not called for every motion
> > > > event. This results in drawing of a bitmap only at the points when the
> > > > motion event is detected.
>
> > > > I can do this very easily using iPhone SDK . Can anyone confirm if
> > > > this is a limitation in Android or if there is a way we can increase
> > > > the rate of motion events?
>
> > > --
> > > 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
>
> > --
> > Dianne Hackborn
> > Android framework engineer
> > hack...@android.com
>
> > Note: please don't send private questions to me, as I don't have time to
> > provide private support, and so won't reply to such e-mails.  All such
> > questions should be posted on public forums, where I and others can see and
> > answer them.
>
>

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

Reply via email to