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.
--
Dianne Hackborn
Android framework engineer
hackbod@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.
On Sat, Oct 17, 2009 at 8:04 PM, Matt Hall <matt.hall@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
hackbod@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