Friday, March 9, 2018

3.0 WIP 17: Landscape Support + Jump To Time/Playing + More

There is a lot to show off this update so I will get right to it.  WIP 17 brings landscape support plus a few other things.  The majority of the views are the same as the portrait version except for now playing and the album details view.  That is not to say more landscape specific views will not be coming in the future. 

Lansdcape Now Playing:


The now playing view is one of the most important views in a music player and I felt GMMP 2.x did not full take advantage of the space as well as it could have.  In 3.0 there are a bunch of changes.  I do plan on having additional Now Playing layouts (like one that users the blurred album art as a background and one that doesnt bleed through the toolbar/status bar) but they will come at a later point.

In landscape there will be 2 extra button slots that you can use.  In the image above I included a fullscreen / immersive mode toggle, and a direct button for the queue (instead of having a FAB).  As mentioned before, these buttons will be configurable.  You can leave empty slots or change the number of total buttons (so if you set it to 5, all 5 buttons will be equally spread out in the view).  In code I combined the gesture actions, context menu actions, and the media button actions into shared modules, so the idea is you will be able to make buttons for many of the gestures and all of the menu options.  The menu is also built dynamically now, so instead of having a massive list of 12-15 options, you will be able to choose which show up the menu. 

Full Screen / Immersive Mode
Dynamically built menu (only 2 actions listed so far)

Another nice thing with the landscape now playing is I made it so certain options are orientation specific.  The metadata being a prime example.  In portrait we really only have room for 3 lines, but in landscape there is tons of space for the metadata, so in this example i added an empty line as a separator and 2 additional lines showing genre, year, bitrate and sample rate.

Landscape Album Grid/List


Album Grid is 4 wide in landscape
2 wide in portrait
Right now the landscape specific settings are the grid size and now playing metadata, but in code its as simple as replacing a single line in order to support diff prefs for orientation.  In the album grid i did also finally add the context menu.  I experimented with a few different positions, but it worked best just right next to the metadata.

Landscape Album Details


The landscape view of album details is much more user friendly I feel.  Instead of having the artwork taking up the top 1/3 of the screen (and only being able to see a small portion of the full image), it is now on the left hand side in full.   Album name and artist in the toolbar and some additional song details are on the right as the first entry of the list.  When I finally add an option to disable the FAB, that top metadata entry will contain one of those 3 dot menus on the right so you can play/enqueue/etc the entire album without the need for the FAB.  The album details will be customizable within reason (i think it'll be about 5-6 different variables available for use).  These album details were also added to the portrait view.

FAB was moved to overlap the metadata view and the album art

Album Details view with the list scrolled up

Jump To Playing / Time

I have only coded up a handle of the menu / gesture actions so far (its what I am currently working on).  Jump To Playing works the same way as before.  The look in the image below is not final, its just the default look of the library I am using for the material dialogs.  Below that is the jump to time dialog which is using a.. time wheel i guess you can call it.  Both features are shown in the video at the end of this post.



Sorting Options

I also went through and implemented the majority of the sorting options for the various views.  All that is left is some of the track sort options.  They require a bit of rework of my database queries, rework that I had to do regardless so they have not all been implemented yet.  One change I made from 2.x is that Date Added is no longer the time the entry was added to the database, it uses the last modified time of the associate files on storage at the time it was scanned into the database.  What this means is you will be able to clear your database and rescan without every single song showing up in Recently Added.

Track Sort

Artist Sort

Album Sort

Navigation View Fixes

Finally I made some navigation view improvements.  The highlighted entry is now consistent with the showing view (and if you go into album details, for example, none will be highlighted since that is not in the nav view).  I also added an entry for bookmark view.

Progress in general is going great.  If you look on trello the majority of the TODO list for the first alpha is done.  It seems like we'll see a release in the upcoming months.  How soon will depend on 1) how much more of the music service refactoring work needs to be done (restoring android auto support is required before i can get approved through google play), and how many small TODOs i have left in the code base.  Some areas need a bunch of work like the folder browser, while others are pretty much good to go.