is good. If I remember correctly (from previous posts in this forum)
your app is getting hammered by all the Touch events, they are coming
much more frequently than the maximum possible screen refresh/redraw
rate.
--
RichardC
On Oct 18, 4:56 am, Dianne Hackborn <hack...@android.com> wrote:
> The move event you receive contains as close as possible to the most recent
> location (it is retrieved immediately before dispatching to the app).
> You don't say how much lag you are seeing, so it is hard to offer advice --
> is it more laggy than in other standard parts of the UI like list views? Is
> it the same? If it is the same, this is probably just a lower-level
> characteristic of the device -- there can be a lot of filtering/processing
> going on in the touch firmware to generate clean points, for example.
>
> If the lag you are seeing is worse than the rest of the UI, it most likely
> is an issue in your app, unrelated to the simple dispatching code here.
> Perhaps some part of the drawing is very slow, etc. You could try
> profiling it to see what is going on.
>
>
>
> On Sat, Oct 17, 2009 at 8:04 PM, Matt Hall <matt.h...@gmail.com> wrote:
>
> > Hi everyone,
>
> > I noticed when developing on an HTC Magic (G2) that when moving your
> > finger on the screen the location of the touch events trail your
> > finger pretty significantly. To test this I wrote a very simple app
> > that just draws a rectangle where you're touching. Even in this simple
> > case the rectangle can trail the finger on screen by a fair amount.
> > Here's the View that handles the touches and draws the rectangle:
>
> > public class TouchTestView extends View {
> > private float x;
> > private float y;
> > private Paint paint = new Paint();
> > public static final int SIZE = 40;
>
> > public TouchTestView(Context context) {
> > super(context);
> > paint.setColor(Color.RED);
> > }
>
> > @Override
> > public boolean onTouchEvent(MotionEvent event) {
> > switch (event.getAction()) {
> > case MotionEvent.ACTION_DOWN:
> > x = event.getX();
> > y = event.getY();
> > invalidate();
> > return true;
> > case MotionEvent.ACTION_MOVE:
> > x = event.getX();
> > y = event.getY();
> > invalidate();
> > return true;
> > case MotionEvent.ACTION_UP:
> > x = -1;
> > y = -1;
> > invalidate();
> > return true;
> > }
> > return super.onTouchEvent(event);
> > }
>
> > @Override
> > protected void onDraw(Canvas canvas) {
> > canvas.drawRect(x - SIZE, y - SIZE, x + SIZE, y + SIZE,
> > paint);
> > }
> > }
>
> > So my question is: Is there a significant built in time delay between
> > the generation of the touch event and it's reception in the running
> > activity? If so, is there any tricks or methods to get those events in
> > a faster or more direct way? In our application the delay is causing
> > some pretty unfortunate performance results.
>
> > Thanks for any advice or help,
> > Matt
>
> --
> 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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---
No comments:
Post a Comment