Rewrite animation logic

* Remove old animation-related code. In the past, animations would be applied to a
view everytime getView was called. This is no longer the case so it fixes the issue of
animations triggering everytime the list was scrolled, dialpad opened, etc.

* Make PhoneFavoriteMergedAdapter (and PhoneFavoritesTileAdapter) return stable IDs, so
that they can be used for animations. The ID schemes are described below:
    (N + 1) to -2: CallLogAdapterItems, where N is equal to the number of call log items
    -1: All contacts button
    0 to (N -1): Rows of tiled contacts, where N is equal to the max rows of tiled contacts
    N to infinity: Rows of regular contacts. Their item id is calculated by N + contact_id,
    where contact_id is guaranteed to never be negative.

* Perform animations by saving each view's offset before the data set changes, and then
applying a translation animation to them based on their new offsets in the updated list view.
This is the same method described by the framework team at :
http://graphics-geek.blogspot.com/2013/06/devbytes-animating-listview-deletion.html
    In our case, we need to perform both horizontal and vertical animations because of the
contact tile favorites.

Bug: 10294203

Change-Id: I3ea4ff9995c539267410a264dbbea5ffa02bc6e3
5 files changed
tree: f5aab137e7bf3390dfb8e9007b9e289a550ee90d
  1. res/
  2. src/
  3. tests/
  4. Android.mk
  5. AndroidManifest.xml
  6. proguard.flags