To do this, we invoke resolveActivity to see what activity
would result from viewing an arbitrary (but valid) URL. If
there's just one installed, or there are multiple and the
user has chosen a default handler for http:, we take that
component and launch it with CATEGORY_HOME (so as not to
upset the URL in the frontmost window/tab/what-have-you).
We also use this information to extract the localized name
of the app, which is then installed into the hotseat as the
contentDescription (for accessibility).
If there's no default and multiple options are availble,
we'll get the activity chooser instead. In this case, we
just fire off that chooser and let the user pick an app
(possibly setting a default along the way). Because the
default may change, we reload all this hotseat information
every time one of the hotseats is tapped.
Another side-effect of this approach is that until there
exists a default browser, the original URL will be sent to
the activity the user chooses from the ResolveActivity. So
we need a sensible default URL here; one can be found in
R.string.default_browser_url (similar to Browser's
R.string.homepage_base).
This change also moves the hotseat intents and icons into
arrays.xml for easier configuration.
Change-Id: I06268df8b59e0f41f1f8b0e47f823db4c44ec761
Also closes the gap below the buttons (not visibly, but the
hit rect now reaches the bottom of the screen). Bug: 2630273
Change-Id: I8e8de6b63f91b2fcf87c3af856003cc36dd6c096
The hotseats are permanent slots on either side of the
AllApps button. Their functions are:
LEFT/BOTTOM: Phone
Launched via the hardcoded class name
com.android.contacts/.ContactsLaunchActivity.
RIGHT/TOP: Browser
Launched by querying to see which application is the
default for URLs, then starting that activity directly.
In the future, it would be ideal to allow an application
with permission to access LauncherProvider to customize
these (icons, contentDescriptions, and Intents).
Bug: 2559083
Change-Id: I56f6e745f8574aa17e28feaa9d2118fb4a715cd4
This way we can figure out how many apps to send to the grid
at a time even if the grid hasn't been instantiated yet.
Bug: 2599979
Change-Id: I7960fe1adae6976555334422335f3a4b28d0675e
* Removed another redundant sort
* Correctly set the thread priority to BACKGROUND for the
all apps loading step.
* Moved batch delay to a resource
* Reduced delay between loading batches of apps to 100ms
(we really just want to sleep a tiny bit between batches
to give the UI time to react)
Bug: 2562420
Bug: 2599979 (related)
Change-Id: I1ae72a68c1a47377a9eb62827fe7666bfc50caa5
Bug #2562729
In landscape, the left and right dots buttons are 93dip wide; this makes them overlap
with widgets at the bottom of the screen. The dots do not need to be that wide but
we chose this size to make it easier to tap them in portrait. To avoid issues in
landscape, this change introduces a new type of ImageView that can ignore touch
events in a certain zone. This was easier and cheaper than re-cutting 36+ assets.
Change-Id: Id261fba41a43dede943e72060e39e87658e4b0df
This fiddles the manifest to allow the app's shared user id and
process to be changed at build time via resource overlays, so we
can build launcher to run in the acore process for low-end devices.
Also switches the cert of launcher back to shared, to allow for
this. (Note this only really matters if the shared user id is set,
otherwise launcher will still get its own uid.)
Change-Id: I0bd0a06e1442c4bfe5ceb2d438cb58f29d911578
all_apps.xml is now a trampoline that loads the correct layout file.
Also take this opportunity to make 2D the default.
Change-Id: Iba2500da1bf4f505f1a5c2f6f32ed6e72ec34c5f
AllAppsView is now the 2D, GridView-based version (very
similar to classic Launcher); AllApps3D is the
RenderScript/Rollo implementation.
TODO:
- some mdpi assets are not in fact mdpi
- related to above: static wallpapers not working yet
- add dynamic selection of 2D/3D AA; currently you must
choose one at build time by picking the appropriate class
in all_apps.xml (see separate CL for sapphire overlay
that does this)
Change-Id: I253d98404ea8a329a4049d2e48edd2e5129fa6ba
used for the workspace.
Consolidate the three icon resampling functions into one.
Ensure that the icons stored in LauncherProvider are the right size, so we don't have to resample
them each time we load them.
Merge commit 'ca1ae49cebd6b0cc56be4e83a69d279c141533a6'
* commit 'ca1ae49cebd6b0cc56be4e83a69d279c141533a6':
Get rid of the built-in search widget in Launcher2