I’m starting up a short Windows Mobile project again, so I thought it would be a good time to collect some of my best practices for .NET Compact Framework development and post them. I’m going to break them down into two sections - usability, and performance best practices (in another post).
Windows Mobile Usability Best Practices
Microsoft has put together a very specific set of guidelines for Windows Mobile usability – the point of this is to get a consistent set of look and feel and application experiences on their platform. Apple has the same sort of guidelines for iPhone development and it really pays off – most applications have the same consistent look and feel and excellent usability. Of course, many of these usability guidelines are relevant across many development platforms, but there are some special considerations for mobile development.
Usability is a challenge in mobile development. Some of the main concerns include…
- Limited screen real estate. In Windows Mobile, the most common size is around 480 x 640 pixels.
- Limited input options. Touch screen. Potentially no hardware keyboard. No mouse, and no scroll wheel.
- Lighting – Indoor / Outdoor usage.
- Gloves (i.e. warehouse users)
- Finger vs. Stylus
Here are some of the most important usability guidelines that Microsoft has set forth…
- Only display the most relevant information and options on the screen, i.e. don’t clutter up the screen with 100 different rarely used options. If a feature is rarely used, place it in a menu or submenu. If a feature or action is used very often, think about assigning it to one of the standard left or right soft keys.
- Use high contrast, sufficiently bright colors. Lighting conditions are an important factor in mobile development. For example, think about if your application could be used in low light or outdoor sunlight conditions.
- Avoid very small font sizes. The screen on a mobile device is very small as-is, and actions on a mobile device are often performed at arms length away from the user (in a warehouse, for example). If a user has to interrupt their workflow to bring the device in front of their face to read the text, then your font is too small.
- Make the user interface predictable and consistent in your application, keep ‘OK’ and ‘Cancel’ actions in the same location throughout your interface. The same buttons should perform the same actions throughout your application. To stay consistent with other Windows Mobile interfaces, one recommendation is to always assign the left soft key to ‘Back’ or ‘Cancel’ actions, and to assign the right soft key to ‘Next’ or ‘OK’ actions. Another Microsoft recommendation is to avoid overriding the hardware buttons (i.e. the Home button).
- Ensure your UI elements are appropriately sized. Buttons sized for a stylus should be at least 21 pixels squared, buttons sized for fingerse should be at least 38 pixels squared.
- Keep screen rotation in mind – developing to account for rotation is a pain, but very important for consumer applications. Your options though are limited to either dynamically resizing the content, or to just design for a square screen.
- Scrolling is discouraged in Windows Mobile applications, because it is kind of a pain for the end user. Try to keep your content on one screen length/width if possible.
- If your target devices may feature a keyboard, assign common actions to key shortcuts. This can greatly increase efficiency for power users.
- For displaying information, make use of Summary, Detail, and Edit views. A ‘Summary’ view displays only the most necessary and relevant information about an item. To access less commonly used information about an item, the user can drill down to a more complete ‘Detail’ view. If a user needs to edit the information, they can access an ‘Edit’ view.
- Ensure you’re setting focus on the appropriate text entry fields in bar code scanning scenarios, etc. If a user is wearing gloves and has to take them off to set focus on a field before they scan a pallet, they’re going to hate your application.