The default behavior on Android (and iOS) is:
- If you are not doing something, the volume buttons change the ring volume, going all the way down goes to vibrate mode, pressing once more goes to silent.
- If you listen to music or watch a video, the volume buttons change the playback volume, not the ring
- If you are in a call, the volume buttons change the voice volume of your partner.
Many custom ROMs of Android implement a really useful addition:
The default behavior is still the same (the buttons change the volume of what you're using) but with a single tap on the Setting Icon, you can expand the panel to change all the different volumes (ring, media, notifications, alarms). Using the volume buttons on the expanded panel will still modify the "current" sound setting.
I think this implementation is the best (at least of what I've experienced so far) since it allows changing the volume quickly thanks to the unchanged default behavior (which is what you want 90% of the time) and it allows modifying every sound parameter with just a single tap without going to the system preferences.