Google is telling Android developers to stop using its Menu button and begin using the Action Bar that was introduced with the Android 3.0 Honeycomb release.
Scott Main, lead tech writer for developer.android.com, penned a Jan. 26 blog post titled “Say Goodbye to the menu Button” to help wean developers off the Menu button. Cutting right to the point, Main said, “Not only should your apps stop relying on the hardware Menu button, but you should stop thinking about your activities using a ‘menu button’ at all.”
Main said before Honeycomb, all Android-powered devices included a dedicated Menu button. “As a developer, you could use the Menu button to display whatever options were relevant to the user, often using the activity’s built-in options menu,” he said.
However, “Honeycomb removed the reliance on physical buttons, and introduced the Action Bar class as the standard solution to make actions from the user options immediately visible and quick to invoke,” Main said. “In order to provide the most intuitive and consistent user experience in your apps, you should migrate your designs away from using the Menu button and toward using the action bar. This isn’t a new concept-the action bar pattern has been around on Android even before Honeycomb-but as Ice Cream Sandwich rolls out to more devices, it’s important that you begin to migrate your designs to the action bar in order to promote a consistent Android user experience.”
Main said developers needn’t be concerned that it will take a lot of work to begin using the Action Bar because of the need to support versions of Android older than Honeycomb. “It’s quite simple for most apps because you can continue to support the Menu button on pre-Honeycomb devices, but also provide the action bar on newer devices with only a few lines of code changes,” he said.
Summarizing his post, Main added:
“If I had to put this whole post into one sentence, it’d be: Set targetSdkVersion to 14 and, if you use the options menu, surface a few actions in the action bar with <code>showAsAction=”ifRoom”</code>.“