summaryrefslogtreecommitdiffstats
path: root/src/com/android/mail
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-10-15 19:59:39 -0700
committerJin Cao <jinyan@google.com>2014-10-15 19:59:39 -0700
commit6ac079b4d236120232f59c080aeeb17ac16c7c8b (patch)
tree731829320883ce5f42dd8574b33f6944e347e110 /src/com/android/mail
parent0c07334fb04e00de53a5dc80ca035e15a8a55377 (diff)
downloadandroid_packages_apps_UnifiedEmail-6ac079b4d236120232f59c080aeeb17ac16c7c8b.tar.gz
android_packages_apps_UnifiedEmail-6ac079b4d236120232f59c080aeeb17ac16c7c8b.tar.bz2
android_packages_apps_UnifiedEmail-6ac079b4d236120232f59c080aeeb17ac16c7c8b.zip
Cleanup of drawer drag
- Don't do anything in enableHardwareLayer if it's already enabled - Add onDrawerDragEnded in TPC for consistency so it has access to all 3 drawer events. - Change ObjectAnimator back into ViewPropertyAnimator Change-Id: If78b833d35f0c37f6b9e4d8c644c8a6714bfc7b7
Diffstat (limited to 'src/com/android/mail')
-rw-r--r--src/com/android/mail/ui/FolderListFragment.java46
-rw-r--r--src/com/android/mail/ui/TwoPaneController.java9
-rw-r--r--src/com/android/mail/ui/TwoPaneLayout.java8
-rw-r--r--src/com/android/mail/utils/Utils.java3
4 files changed, 30 insertions, 36 deletions
diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java
index 87f315c16..3ac54f04d 100644
--- a/src/com/android/mail/ui/FolderListFragment.java
+++ b/src/com/android/mail/ui/FolderListFragment.java
@@ -226,9 +226,6 @@ public class FolderListFragment extends ListFragment implements
private AnimatorListenerAdapter mMiniDrawerFadeInListener;
private AnimatorListenerAdapter mListViewFadeInListener;
- private ObjectAnimator mCurrentMiniDrawerAnimator;
- private ObjectAnimator mCurrentListViewAnimator;
-
/**
* Constructor needs to be public to handle orientation changes and activity lifecycle events.
*/
@@ -793,14 +790,6 @@ public class FolderListFragment extends ListFragment implements
mIsMinimized = minimized;
- // Cancel any current running animation if exists
- if (mCurrentMiniDrawerAnimator != null) {
- mCurrentMiniDrawerAnimator.cancel();
- }
- if (mCurrentListViewAnimator != null) {
- mCurrentListViewAnimator.cancel();
- }
-
Utils.enableHardwareLayer(mMiniDrawerView);
Utils.enableHardwareLayer(mListView);
if (mIsMinimized) {
@@ -810,11 +799,15 @@ public class FolderListFragment extends ListFragment implements
mMiniDrawerView.setVisibility(View.VISIBLE);
// Animate the mini-drawer to fade in.
- mCurrentMiniDrawerAnimator = createFadeAnimation(mMiniDrawerView, 1f, duration,
- mMiniDrawerFadeInListener);
+ mMiniDrawerView.animate()
+ .alpha(1f)
+ .setDuration(duration)
+ .setListener(mMiniDrawerFadeInListener);
// Animate the list view to fade out.
- mCurrentListViewAnimator = createFadeAnimation(mListView, 0f, duration,
- mListViewFadeOutListener);
+ mListView.animate()
+ .alpha(0f)
+ .setDuration(duration)
+ .setListener(mListViewFadeOutListener);
} else {
// From the current state (either minimized or partially dragged) to maximized.
final float startAlpha = mMiniDrawerView.getAlpha();
@@ -823,23 +816,16 @@ public class FolderListFragment extends ListFragment implements
mListView.requestFocus();
// Animate the mini-drawer to fade out.
- mCurrentMiniDrawerAnimator = createFadeAnimation(mMiniDrawerView, 0f, duration,
- mMiniDrawerFadeOutListener);
+ mMiniDrawerView.animate()
+ .alpha(0f)
+ .setDuration(duration)
+ .setListener(mMiniDrawerFadeOutListener);
// Animate the list view to fade in.
- mCurrentListViewAnimator = createFadeAnimation(mListView, 1f, duration,
- mListViewFadeInListener);
+ mListView.animate()
+ .alpha(1f)
+ .setDuration(duration)
+ .setListener(mListViewFadeInListener);
}
-
- mCurrentMiniDrawerAnimator.start();
- mCurrentListViewAnimator.start();
- }
-
- private ObjectAnimator createFadeAnimation(View v, float alpha, long duration,
- AnimatorListenerAdapter listener) {
- final ObjectAnimator anim = ObjectAnimator.ofFloat(v, "alpha", alpha);
- anim.setDuration(duration);
- anim.addListener(listener);
- return anim;
}
public void onDrawerDragStarted() {
diff --git a/src/com/android/mail/ui/TwoPaneController.java b/src/com/android/mail/ui/TwoPaneController.java
index c3d91a794..f36a2b312 100644
--- a/src/com/android/mail/ui/TwoPaneController.java
+++ b/src/com/android/mail/ui/TwoPaneController.java
@@ -380,7 +380,8 @@ public final class TwoPaneController extends AbstractActivityController implemen
}
}
- protected void onDragStarted() {
+ /** START TPL DRAWER DRAG CALLBACKS **/
+ protected void onDrawerDragStarted() {
final FolderListFragment flf = getFolderListFragment();
if (flf == null) {
LogUtils.w(LOG_TAG, "no drawer to toggle open/closed");
@@ -400,6 +401,12 @@ public final class TwoPaneController extends AbstractActivityController implemen
flf.onDrawerDrag(percent);
}
+ protected void onDrawerDragEnded(boolean minimized) {
+ // On drag completion animate the drawer to the final state.
+ setDrawerState(minimized);
+ }
+ /** END TPL DRAWER DRAG CALLBACKS **/
+
@Override
public boolean shouldPreventListSwipesEntirely() {
return isDrawerOpen();
diff --git a/src/com/android/mail/ui/TwoPaneLayout.java b/src/com/android/mail/ui/TwoPaneLayout.java
index cf1a047ab..df563fd3a 100644
--- a/src/com/android/mail/ui/TwoPaneLayout.java
+++ b/src/com/android/mail/ui/TwoPaneLayout.java
@@ -475,7 +475,7 @@ final class TwoPaneLayout extends FrameLayout implements ModeChangeListener,
@Override
public void onDragStarted() {
- mController.onDragStarted();
+ mController.onDrawerDragStarted();
}
@Override
@@ -503,13 +503,13 @@ final class TwoPaneLayout extends FrameLayout implements ModeChangeListener,
if (isFling) {
// Drawer is minimized if velocity is toward the left or it's rtl.
if (mIsRtl) {
- mController.setDrawerState(velocityX >= 0);
+ mController.onDrawerDragEnded(velocityX >= 0);
} else {
- mController.setDrawerState(velocityX < 0);
+ mController.onDrawerDragEnded(velocityX < 0);
}
} else {
// If we got past the half-way mark, animate it rest of the way.
- mController.setDrawerState(computeDragPercentage(deltaX) < 0.5f);
+ mController.onDrawerDragEnded(computeDragPercentage(deltaX) < 0.5f);
}
}
diff --git a/src/com/android/mail/utils/Utils.java b/src/com/android/mail/utils/Utils.java
index 0bfec5858..a9c93bf16 100644
--- a/src/com/android/mail/utils/Utils.java
+++ b/src/com/android/mail/utils/Utils.java
@@ -922,7 +922,8 @@ public class Utils {
* is enabled. Does nothing otherwise.
*/
public static void enableHardwareLayer(View v) {
- if (v != null && v.isHardwareAccelerated()) {
+ if (v != null && v.isHardwareAccelerated() &&
+ v.getLayerType() != View.LAYER_TYPE_HARDWARE) {
v.setLayerType(View.LAYER_TYPE_HARDWARE, null);
v.buildLayer();
}