Finger Flickin’ with BMoney
October 5, 2007
How many Windows Mobile users have been lusting after the iPhone’s finger flicking functionality? I know I have. Finger flickin’ is useful and a fun effect. Last night I decided I would make it mine the hard way (coding).
So I got started around 9pm, this video is what I ended up with around 1am. The video might not do it justice, but it works wonderfully. It’s very responsive and there is no screen-flicker. I was surprised how simple this actually was.
Basically there are only six strings I’m drawing with the text. Those move to give the illusion that the list is scrolling. The painting is done by overriding the OnPaint event. I implemented double-buffering there to prevent any flickers.
If you’re interested in a copy of the source code just fire me an email.
October 8, 2007 at 8:44 am
I think you have done a wonderful job with the scrolling. I am sure you know it would nice if you a range stop that bounced.
I would love to have the source and if I can offer any help.
October 8, 2007 at 12:19 pm
This project is posted at The Code Project here…
http://www.codeproject.com/useritems/FingerFlicker.asp
And also on Channel9 here…
http://channel9.msdn.com/ShowPost.aspx?PostID=346259
Unfortunately the first version I uploaded was crap. I came up with this idea late in the night and wrote the code half awake. My subsequent releases have been incrementally better, and much more organized, but I think I might have posted this too soon. I seem to have scared off most the readers.
You’re only my second comment. The first (on The Code Project) was pissed.
Here’s the deal, I couldn’t find ANYTHING like this in C#. And I think most the people coding for Smartphones, Pocket PC, etc. are using C# or C++. Maybe the problem is that this only runs in 240×240. I know how to adjust the scale dynamically, I just haven’t because I’m focused on other functionality.
It’d be great if you wanted to helpout with this. The scrolling still isn’t quite right at fast speeds. It’s fine on low speeds. This is caused by the LabelMover (stupid name, I’ll change it later) class with this code…
if ((List.LabelPositions[0] 253) && (List.YDirection == LabelList.DIRECTION_DOWN))
{
offScreen = true;
}
The -37 and 253 values are triggers for when the labels should reset. That needs to be different for each speed right now.
I think a smarter method would be to calculate the distance moved and check that each time instead. That also is going to be required for keyboard/wheel movements.
Those movements will need to be collected asynchronously and stored on a stack/array/etc. Then the LabelMover (hopefully renamed by then) should read that stack and process the commands.
The keyboard interface on Smarthphones (like the Motorola Q) needs a separate thread. If it has it’s own keyboard buffer it doesn’t work properly.
So…If you could help with the scrolling smoothness or the keyboard interface (I’m thinking arrow keys and wheel only) that’d be great!
…And make suggestions if you have them.
October 8, 2007 at 1:21 pm
Oh, and on the bouncing. That’s a good idea, I was thinking the same thing. It’s a must have effect. I want to write a routine that bounces one bitmap over another. That way I can re-use it for other things. >:)
December 7, 2007 at 7:02 am
Wow. This looks really impresive.
Would you mind sending me the source code?
December 7, 2007 at 8:49 am
Actualy, I *just* completed a massive upgrade to the codebase last week. The list now moves very quickly, smoothly and kinetically. …But I don’t know if I want to give it away since it took a lot of time to perfect. I’ll have to think about it. What do you want to use the list for?
December 7, 2007 at 8:54 am
Oh, and in the new version I don’t use labels or any other controls. It’s all buffered GDI+ accelerated drawing commands (all smartphones support GDI+ accelertion). I also ended up using multiple threads. That was key to smooth animation/input.
December 8, 2007 at 9:28 am
I would like to express my interest on the code. I am developing a SlimServer client for the PocketPC (whose source I am probably going to open at some point), and was looking for an iphonelist-like component for browsing the music library on the server.
January 19, 2008 at 6:13 pm
i was wondering if you would share this code too, i’m working on a lighting controller in c# for my pocket pc and i like the finger control over stylus. thanks.
January 29, 2008 at 12:47 am
Hi,
I tried out your version from codeproject and let me say this is a great control. I am currently developing a threaded SMS application for WM6 and would like to add the finger scrolling functionality (it’s going to be for free). I was wondering if it’s possible to send me the latest code for your project so i can integrate it into my app. For sure i’ll be giving you your credit. Also if interested in getting to know more about the app, please just fire me an email.
Waiting to hear from you,
Thanks appreciate your gr8 tutorial
February 28, 2008 at 12:58 pm
Great Script!
I was wandering if I could see a copy of the source, I want to peek under the hood.
April 21, 2008 at 11:46 am
I think your code is great and I downloaded the one on CodeProject. I was wondering if you have a latest updated version of your code, could you please email it to me. I would love to use it in a personal financial application that I’m making.
August 5, 2008 at 2:27 am
Just great! Can you send me a copy of the source code?
Thanks!
December 4, 2008 at 7:03 pm
Hey there! Really interested in your much updated version that uses GDI+.
Any chance I could get the source? You haven’t updated the codeproject site in a very long time.
Thanks and take care!
January 26, 2009 at 3:45 pm
Hi. I am developing an application (freeware) and would love to use your creation in my application (with due credit of course!). You can see my thread at XDA at:
http://forum.xda-developers.com/showthread.php?t=471972
Thank you!
February 24, 2009 at 5:39 am
It’s a wonderful job!Can i have a copy of the source code?
thanks!
February 24, 2009 at 1:40 pm
hi, great article/code set. wondering if your latest version is what is on codeproject, or if you do have a later version, could you email it to me?
thanks !!
February 25, 2009 at 9:20 pm
hi, great article/code set. wondering if you do have a later version, Can you send me a copy of the latest versiosource code?
Thanks
Kevin
February 27, 2009 at 6:58 am
I moved from an iPhone to a HTC Touch HD, and miss (of all things) my shopping list program. I’d like to keep the scrolling effect, and you seem to have a good start on it. Can you please send me a copy of the source?
Thanks
Rich
April 19, 2009 at 5:59 pm
Hiya! Amazing article! I’m a newbie cooking up an iPhone proof of concept open source library that would host similar controls at some point in future (for all to use). I would be grateful if you could send me the latest copy of your source code please (read: really really grateful!) Many thanks!
April 22, 2009 at 8:54 am
Thanks but sorry, I’m not releasing the latest version of this code.
I made huge improvements over this version and wrote lots of other useful stuff. I’m planning on releasing the code for this list, and lots of other shizzle, in my forthcoming BS Framework product. Which will be open source and pure C#. I’ll email you when it’s done.
I wrote the BS Fart App to test this list and some other code. For a taste of some technology I’ll be including, visit http://www.bsfartapp.com