So I was turning all this stuff over in my head last night, thought I'd post some initial thoughts on activity/menu hierarchy:
SplashActivity (rename MainActivity)
- Extracts assets and launches MainActivity
MainActivity
- Gallery panel (arrangement of blocks representing game roms, like Android's Gallery app)
o Example game block (like your illustration)
" Cover art
" Game name (possibly with interpretation of tags like (U), (!), etc.)
" Clicking/tapping pops up dialog:
* Resume (launches GameActivity, pass resume flag to activity)
* Restart (launches GameActivity)
* Game-specific settings (launches SettingsActivity, passing <gameid> to activity)
- Action bar (or bottom menu in pre-Honeycomb), with most or all items in overflow
o Multi-player setup (launches player mapping dialog)
o Global settings (launches SettingsActivity without passing a game id)
o Refresh games list (starts task to locate roms, pre-compute CRCs, download art)
o Language
o Help
o About
SettingsActivity, when no game is passed (i.e. global settings) (evolution of current MenuActivity)
- Touchscreen (same as current, exceptions below)
o Different UI for managing the layout (needs an Auto setting at very least)
- Touchpad (same as current)
- Controllers, keypads, and buttons
o Mappable volume keys
o Player 1 (dropdown with profiles, with a "disabled" option)
o Player 2 (dropdown with profiles, with a "disabled" option)
o Player 3 (dropdown with profiles, with a "disabled" option)
o Player 4 (dropdown with profiles, with a "disabled" option)
o Create custom profile (launches InputMapActivity)
- Video
o Flicker reduction
o Screen orientation
o Vertical screen position (default: Top)
o Rendered resolution (add Auto, make default)
o Screen scaling (add Crop option)
o Display framerate
- Advanced
o Navigation mode
o Swap audio channels
o Use framelimiter
o ROM directory
o User data directory (slot saves, manual saves, input profiles, custom skins, per-game prefs)
o Reload app resources
o Device info
o Crash reports category (same as current)
- Reset global preferences
SettingsActivity, when <gameid> is passed (hide some global settings, show some extra ones)
- Touchscreen (allow game-specific layout, skin, holdables)
- Touchpad (allow everything game-specific)
- Controllers, keypads, and buttons (allow game-specific profiles)
- Video
o Flicker reduction
o Screen orientation
o Vertical screen position
o Rendered resolution
o Screen scaling
o Display framerate
o Video plugins
" Plugin (Auto, glide, rice, n64) (default: Auto)
" gles2n64 category
" gles2rice category
" gles2glide category
- Expert settings (don't change these unless you what you're doing!)
o Use framelimiter
o R4300 emulator (Auto, dynarec, cached interpreter, pure interpreter)
o RSP plugin (Auto, rsp-hle, rsp-hle-nosound, none)
o Audio plugin (Auto, mupen64plus-sdl-audio, none)
o Input plugin (Auto, input-android, none)
- Reset <gamename>-specific preferences