Re: [android-beginners] Finger swipe in Android API level 3 (OS 1.5) ?
I did a little playing around with the new gestures support and I was a little disappointed... It didn't seem to have any notion of a starting or ending point (which was critical for my application). Also, the methods returned void instead of a boolean indicating whether the event should be propagated on or not... which also caused me grief. Why they did it that way I have no clue, but it certainly didn't work for my situation. As a result I am still using the method I posted earlier. Thanks, Justin -- There are only 10 types of people in the world... Those who know binary and those who don't. -- On Tue, May 25, 2010 at 8:27 AM, Chris Ross > wrote: > > Thanks much. I had found something similar elsewhere in my searching, and > as you ended up making a subclass of SimpleOnGestureListener. As it > happens, I made that class inside of my primary Activity class, so I didn't > have to pass the object into the instantiator like you did, but the same > "have to work back into the main object" effectively applies, and I see your > point. > > If I get to a point where I'm willing to ignore the 1.5 OS revision, I'll > see what else can be done with the new gestures support added in API level > 4... > > - Chris > > On May 25, 2010, at 3:50 AM, Justin Anderson wrote: > > > I know this is late, but hopefully it will help you and others out there > still programming stuff to be compatible with 1.5... This is a simplified > version of a class that I use to detect a vertical swipe on a Gallery > object. To see it in action and test it out you can take a look at > "AppSwipe!" on the market (It's free...) > > > > In order to get the swipe working exactly the way you want it to you may > have to fiddle around with the three integers used for detecting a swipe. > > > > public class GallerySwipeUpDetector extends SimpleOnGestureListener > implements OnTouchListener > > { > > private Gallery m_gallery; > > GestureDetector m_detector; > > int m_swipeMaxOffPath; //Maximum horizontal tolerance for detecting a > vertical swipe > > int m_swipeMinDistance; //Minimum distance in order to detect a > vertical swipe > > int m_swipeMinVelocity; //Minimum velocity (pixels/second) in order > to detect a vertical swipe > > > > public GallerySwipeUpDetector(Gallery gallery) > > { > > m_gallery = gallery; > > m_detector = new GestureDetector(this); > > m_swipeMaxOffPath = 25; > > m_swipeMinDistance = 10; > > m_swipeMinVelocity = 10; > > } > > > > @Override > > public boolean onFling(MotionEvent e1, MotionEvent e2, float > velocityX, float velocityY) > > { > > if (Math.abs(e1.getX() - e2.getX()) < m_swipeMaxOffPath && > > e1.getY() - e2.getY() >= m_swipeMinDistance && > > Math.abs(velocityY) >= m_swipeMinVelocity) > > { > > int pos = m_gallery.pointToPosition((int)e1.getX(), > (int)e1.getY()); > > int firstPos = m_gallery.getFirstVisiblePosition(); > > int viewablePos = pos - firstPos; > > View swipedView = m_gallery.getChildAt(viewablePos); > > > > if (swipedView != null) > > executeSwipeUpAction(pos); > > > > return true; > > } > > > > return false; > > } > > > > protected void executeSwipeUpAction(int pos) > > { > > //Do stuff > > } > > > > @Override > > public boolean onTouch(View v, MotionEvent event) > > { > > return m_detector == null ? false : > m_detector.onTouchEvent(event); > > } > > } > > > > I would then use this class as follows: > > > > Gallery myGallery = (Gallery) findViewById(R.id.myGalleryID); > > myGallery.setOnTouchListener(new GallerySwipeUpDetector(myGallery)); > > > > There may be a better way to do this, but this worked for me. If someone > else has another solution that works better then I would be interested as > well. I really don't like having to call a method on my gallery and pass it > in as an argument to my listener (I think it's ugly and probably a poor > design), but that was the only thing I could think of to do and it works. > > > > Hope this helps, > > Justin > > > > -- > > There are only 10 types of people in the world... > > Those who know binary and those who don't. > > -- > > > > > > On Fri, May 21, 2010 at 3:31 PM, Justin Anderson > wrote: > > It is admittedly difficult to get it to work in 1.5... > > > > I have implemented it for my app on the market (AppSwipe!) but it was not > easy. It might be a day or two before I have a chance to sit down and look > at my code but as soon as I can, I will post something her
Re: [android-beginners] Finger swipe in Android API level 3 (OS 1.5) ?
Thanks much. I had found something similar elsewhere in my searching, and as you ended up making a subclass of SimpleOnGestureListener. As it happens, I made that class inside of my primary Activity class, so I didn't have to pass the object into the instantiator like you did, but the same "have to work back into the main object" effectively applies, and I see your point. If I get to a point where I'm willing to ignore the 1.5 OS revision, I'll see what else can be done with the new gestures support added in API level 4... - Chris On May 25, 2010, at 3:50 AM, Justin Anderson wrote: > I know this is late, but hopefully it will help you and others out there > still programming stuff to be compatible with 1.5... This is a simplified > version of a class that I use to detect a vertical swipe on a Gallery object. > To see it in action and test it out you can take a look at "AppSwipe!" on > the market (It's free...) > > In order to get the swipe working exactly the way you want it to you may have > to fiddle around with the three integers used for detecting a swipe. > > public class GallerySwipeUpDetector extends SimpleOnGestureListener > implements OnTouchListener > { > private Gallery m_gallery; > GestureDetector m_detector; > int m_swipeMaxOffPath; //Maximum horizontal tolerance for detecting a > vertical swipe > int m_swipeMinDistance; //Minimum distance in order to detect a vertical > swipe > int m_swipeMinVelocity; //Minimum velocity (pixels/second) in order to > detect a vertical swipe > > public GallerySwipeUpDetector(Gallery gallery) > { > m_gallery = gallery; > m_detector = new GestureDetector(this); > m_swipeMaxOffPath = 25; > m_swipeMinDistance = 10; > m_swipeMinVelocity = 10; > } > > @Override > public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, > float velocityY) > { > if (Math.abs(e1.getX() - e2.getX()) < m_swipeMaxOffPath && > e1.getY() - e2.getY() >= m_swipeMinDistance && > Math.abs(velocityY) >= m_swipeMinVelocity) > { > int pos = m_gallery.pointToPosition((int)e1.getX(), > (int)e1.getY()); > int firstPos = m_gallery.getFirstVisiblePosition(); > int viewablePos = pos - firstPos; > View swipedView = m_gallery.getChildAt(viewablePos); > > if (swipedView != null) > executeSwipeUpAction(pos); > > return true; > } > > return false; > } > > protected void executeSwipeUpAction(int pos) > { > //Do stuff > } > > @Override > public boolean onTouch(View v, MotionEvent event) > { > return m_detector == null ? false : m_detector.onTouchEvent(event); > } > } > > I would then use this class as follows: > > Gallery myGallery = (Gallery) findViewById(R.id.myGalleryID); > myGallery.setOnTouchListener(new GallerySwipeUpDetector(myGallery)); > > There may be a better way to do this, but this worked for me. If someone > else has another solution that works better then I would be interested as > well. I really don't like having to call a method on my gallery and pass it > in as an argument to my listener (I think it's ugly and probably a poor > design), but that was the only thing I could think of to do and it works. > > Hope this helps, > Justin > > -- > There are only 10 types of people in the world... > Those who know binary and those who don't. > -- > > > On Fri, May 21, 2010 at 3:31 PM, Justin Anderson > wrote: > It is admittedly difficult to get it to work in 1.5... > > I have implemented it for my app on the market (AppSwipe!) but it was not > easy. It might be a day or two before I have a chance to sit down and look > at my code but as soon as I can, I will post something here to at least point > you in the right direction. > > Thanks, > > Justin > > -- > There are only 10 types of people in the world... > Those who know binary and those who don't. > -- > > > On Tue, May 18, 2010 at 11:58 AM, Chris Ross wrote: > > Hi there. When searching for information about how to code up recognition > of a finger swipe across the screen, I find most references to the Gesture > API added in API level 4 (OS 1.6). However, there are still quite a few > devices (The HTC Droid Eris, for example. And the ole G1.) that are running > 1.5. > > The rest of my app is working just fine requiring only API level 3, but I > would like to add swipe recognition. The home screens on the afore-mentioned > OS 1.5 devices detect sw
Re: [android-beginners] Finger swipe in Android API level 3 (OS 1.5) ?
I know this is late, but hopefully it will help you and others out there still programming stuff to be compatible with 1.5... This is a simplified version of a class that I use to detect a vertical swipe on a Gallery object. To see it in action and test it out you can take a look at "AppSwipe!" on the market (It's free...) In order to get the swipe working exactly the way you want it to you may have to fiddle around with the three integers used for detecting a swipe. public class GallerySwipeUpDetector extends SimpleOnGestureListener implements OnTouchListener { private Gallery m_gallery; GestureDetector m_detector; int m_swipeMaxOffPath; //Maximum horizontal tolerance for detecting a vertical swipe int m_swipeMinDistance; //Minimum distance in order to detect a vertical swipe int m_swipeMinVelocity; //Minimum velocity (pixels/second) in order to detect a vertical swipe public GallerySwipeUpDetector(Gallery gallery) { m_gallery = gallery; m_detector = new GestureDetector(this); m_swipeMaxOffPath = 25; m_swipeMinDistance = 10; m_swipeMinVelocity = 10; } @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (Math.abs(e1.getX() - e2.getX()) < m_swipeMaxOffPath && e1.getY() - e2.getY() >= m_swipeMinDistance && Math.abs(velocityY) >= m_swipeMinVelocity) { int pos = m_gallery.pointToPosition((int)e1.getX(), (int)e1.getY()); int firstPos = m_gallery.getFirstVisiblePosition(); int viewablePos = pos - firstPos; View swipedView = m_gallery.getChildAt(viewablePos); if (swipedView != null) executeSwipeUpAction(pos); return true; } return false; } protected void executeSwipeUpAction(int pos) { //Do stuff } @Override public boolean onTouch(View v, MotionEvent event) { return m_detector == null ? false : m_detector.onTouchEvent(event); } } I would then use this class as follows: Gallery myGallery = (Gallery) findViewById(R.id.myGalleryID); myGallery.setOnTouchListener(new GallerySwipeUpDetector(myGallery)); There may be a better way to do this, but this worked for me. If someone else has another solution that works better then I would be interested as well. I really don't like having to call a method on my gallery and pass it in as an argument to my listener (I think it's ugly and probably a poor design), but that was the only thing I could think of to do and it works. Hope this helps, Justin -- There are only 10 types of people in the world... Those who know binary and those who don't. -- On Fri, May 21, 2010 at 3:31 PM, Justin Anderson wrote: > It is admittedly difficult to get it to work in 1.5... > > I have implemented it for my app on the market (AppSwipe!) but it was not > easy. It might be a day or two before I have a chance to sit down and look > at my code but as soon as I can, I will post something here to at least > point you in the right direction. > > Thanks, > > Justin > > -- > There are only 10 types of people in the world... > Those who know binary and those who don't. > -- > > > On Tue, May 18, 2010 at 11:58 AM, Chris Ross > > > wrote: > >> >> Hi there. When searching for information about how to code up >> recognition of a finger swipe across the screen, I find most references to >> the Gesture API added in API level 4 (OS 1.6). However, there are still >> quite a few devices (The HTC Droid Eris, for example. And the ole G1.) that >> are running 1.5. >> >> The rest of my app is working just fine requiring only API level 3, but I >> would like to add swipe recognition. The home screens on the >> afore-mentioned OS 1.5 devices detect swipes to go across pages, so it must >> be possible in there somewhere. It is just that it's really hard before the >> API level 4 Gesture code came in, or is it really effectively not possible? >> >> Can anyone tell me how to detect swipes (just a directional swipe left or >> right across the screen) in OS 1.5 (API level 3, or below) ? >> >> Thanks... >> >> - Chris >> >> >> -- >> You received this message because you are subscribed to the Google >> Groups "Android Beginners" group. >> >> NEW! Try asking and tagging your question on Stack Overflow at >> http://stackoverflow.com/questions/tagged/android >> >> To unsubscribe from this group, send email to >> android-beginners+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/android-beginners?hl=en >> > > -- You receive
Re: [android-beginners] Finger swipe in Android API level 3 (OS 1.5) ?
It is admittedly difficult to get it to work in 1.5... I have implemented it for my app on the market (AppSwipe!) but it was not easy. It might be a day or two before I have a chance to sit down and look at my code but as soon as I can, I will post something here to at least point you in the right direction. Thanks, Justin -- There are only 10 types of people in the world... Those who know binary and those who don't. -- On Tue, May 18, 2010 at 11:58 AM, Chris Ross > wrote: > > Hi there. When searching for information about how to code up recognition > of a finger swipe across the screen, I find most references to the Gesture > API added in API level 4 (OS 1.6). However, there are still quite a few > devices (The HTC Droid Eris, for example. And the ole G1.) that are running > 1.5. > > The rest of my app is working just fine requiring only API level 3, but I > would like to add swipe recognition. The home screens on the > afore-mentioned OS 1.5 devices detect swipes to go across pages, so it must > be possible in there somewhere. It is just that it's really hard before the > API level 4 Gesture code came in, or is it really effectively not possible? > > Can anyone tell me how to detect swipes (just a directional swipe left or > right across the screen) in OS 1.5 (API level 3, or below) ? > > Thanks... > > - Chris > > > -- > You received this message because you are subscribed to the Google > Groups "Android Beginners" group. > > NEW! Try asking and tagging your question on Stack Overflow at > http://stackoverflow.com/questions/tagged/android > > To unsubscribe from this group, send email to > android-beginners+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/android-beginners?hl=en > -- You received this message because you are subscribed to the Google Groups "Android Beginners" group. NEW! Try asking and tagging your question on Stack Overflow at http://stackoverflow.com/questions/tagged/android To unsubscribe from this group, send email to android-beginners+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en
[android-beginners] Finger swipe in Android API level 3 (OS 1.5) ?
Hi there. When searching for information about how to code up recognition of a finger swipe across the screen, I find most references to the Gesture API added in API level 4 (OS 1.6). However, there are still quite a few devices (The HTC Droid Eris, for example. And the ole G1.) that are running 1.5. The rest of my app is working just fine requiring only API level 3, but I would like to add swipe recognition. The home screens on the afore-mentioned OS 1.5 devices detect swipes to go across pages, so it must be possible in there somewhere. It is just that it's really hard before the API level 4 Gesture code came in, or is it really effectively not possible? Can anyone tell me how to detect swipes (just a directional swipe left or right across the screen) in OS 1.5 (API level 3, or below) ? Thanks... - Chris -- You received this message because you are subscribed to the Google Groups "Android Beginners" group. NEW! Try asking and tagging your question on Stack Overflow at http://stackoverflow.com/questions/tagged/android To unsubscribe from this group, send email to android-beginners+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-beginners?hl=en