Frameworks: Slim recent app screen

One of the parts on AOSP google
missed to update/improve in the last couple of releases is the recent
app screen to allow better and faster multitasking. I had always a
special vision how it could/should look and gives the user a faster
workflow. This commit is now our new recent screen. It is a complete new
implementation and replaces googles AOSP recent app screen. The code
changes in the base itself are quiet miniml to call the new recent
screen. Some notes: 1. This patch needs a new repo: frameworks_opt_cards
which is a central repo
   to get any kind of googles cards style. Thanks Gabrielle Mariotti a
ton who
   made the base for this library and hellped a lot out.  We just fixed
together with him some parts
   and mad it useable as AOSP central library. So we can use it later
for other
   changes as well 2. Preload needs to work 100%. So it is needed to
check that the calling parts
   (like hw key rebinding, pie, navigation bar) do a proper preload. If
they do not
   recent screen will just not show up. To follow what they are doing
you can enable
   debug in RecentController.java which exactly shows what was called.
Some notes to the patch itself: - Recent app screen slides from the
right edge into the screen - Show recent apps in new google card style.
Most recent apps show
  expanded with the app screenshot. Other are collapsed. Of course
  the user can change expanded/collapse of each app during the session
where the state
  will be restored on next access. - Compared to AOSP recents we do a 3
stage loading
  1. step: preload the task list and build or update the cards (does not
load any content at this point)
  2. step: User actually toggled the recent screen....icons, text and
screenshot thumbnail which will get visible are loaded now
  3. step: Recent screen is fully animated in. All other non visible
content at this time are loaded now.
  This allows a smooth experience for the user and a minimal load on the
first 2 steps. Especially important due that we handle
  a lot animations which are very picky when it comes to background
loads. last 2 steps are async multithreaded loading tasks. - We are
using for the app icons and thumbnails a bitmap LRU cache controller to
have fast access to the bitmaps we need. This improves especially
  the scrolling and as well the loading time due that allready loaded
app icons are holded in the LRU cache. - Theme support is included as
well for all items the recent screen has - Most important point: Way
faster workflow now. The recent screen neither freezes the underlaying
app nor it does interrupt the current process the
  user is in. It just slides over the current app about 40% of the
screen. Back button as well just an outside touch (which will be passed
trough to the app)
  allows to immediatelly go ahead in your workflow. - Normal click opens
an app, longpress opens app detail screen (note: we have only one hidden
action on our current recents. If we later decide there could be
  other actions as well...showing a google card menu button on the top
right is a very easy task and allready provided from the
frameworks_opt_cards lib)
  swipe left or right removes the app from the current tasks - Pinch to
zoom out gesture provides the ability to remove all tasks with a big red
warning!! - All above mentioned actions are animated. - As usual it is
multiDpi compatible - A lot work went into the optimizing especially for
low end non gfx devices where animations
  as well listview scrolling is not that easy. We got the maximum out of
optimization here which
  gives acceptable results on low end devices and amazing one on the gfx
capable devices. - A small side note this patch contains as well a fix
on navigation bar preload. Thats the short description.....user need to
see it to get the real benefits of this new way. cheers
kufi