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.

20 Responses to “Finger Flickin’ with BMoney”

  1. Daryl Hazelwood Says:

    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.

  2. 8r13n Says:

    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.

  3. 8r13n Says:

    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. >:)

  4. Damian Says:

    Wow. This looks really impresive.
    Would you mind sending me the source code?

  5. 8r13n Says:

    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?

  6. 8r13n Says:

    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.

  7. Pan Says:

    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.

  8. uncle louie Says:

    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.

  9. Mustafa Says:

    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

  10. Robert Says:

    Great Script!

    I was wandering if I could see a copy of the source, I want to peek under the hood.

  11. Oscar Says:

    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.

  12. Manuel Says:

    Just great! Can you send me a copy of the source code?
    Thanks!

  13. Synced Says:

    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!

  14. Umair Chagani Says:

    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!

  15. u2u Says:

    It’s a wonderful job!Can i have a copy of the source code?

    thanks!

  16. Shawn Says:

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

  17. kevin Says:

    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

  18. Richard Says:

    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

  19. Fahad Says:

    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!

  20. 8r13n Says:

    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


Leave a reply to Daryl Hazelwood Cancel reply