Loading src/com/android/settings/dashboard/DashboardItemAnimator.java +10 −3 Original line number Diff line number Diff line Loading @@ -18,15 +18,22 @@ package com.android.settings.dashboard; import android.support.v4.view.ViewCompat; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.RecyclerView.ViewHolder; import com.android.settingslib.drawer.Tile; public class DashboardItemAnimator extends DefaultItemAnimator { @Override public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder, int fromX, int fromY, int toX, int toY) { if (oldHolder == newHolder) { final Object tag = oldHolder.itemView.getTag(); if (tag instanceof Tile && oldHolder == newHolder) { // When this view has other move animation running, skip this value to avoid // animations interrupt each other. if (!isRunning()) { fromX += ViewCompat.getTranslationX(oldHolder.itemView); fromY += ViewCompat.getTranslationY(oldHolder.itemView); } if (fromX == toX && fromY == toY) { dispatchMoveFinished(oldHolder); return false; Loading src/com/android/settings/dashboard/DashboardSummary.java +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ public class DashboardSummary extends InstrumentedPreferenceFragment public void onConditionsChanged() { Log.d(TAG, "onConditionsChanged"); mAdapter.setConditions(mConditionManager.getConditions()); mDashboard.scrollToPosition(0); } private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> { Loading tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java +13 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.widget.TextView; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.dashboard.SupportItemAdapter.ViewHolder; import com.android.settingslib.drawer.Tile; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -41,20 +42,30 @@ public class DashboardItemAnimatorTest { final Context context = ShadowApplication.getInstance().getApplicationContext(); mDashboardItemAnimator = new DashboardItemAnimator(); mViewHolder = new ViewHolder(new TextView(context)); mViewHolder.itemView.setTag(new Tile()); } @Test public void testAnimateChange_NoOffset_NoPendingAnimation() { public void testAnimateChange_NoPositionChange_NoPendingAnimation() { final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 1, 0, 1); assertThat(hasPendingAnimation).isFalse(); } @Test public void testAnimateChange_HasOffset_HasPendingAnimation() { public void testAnimateChange_HasPositionChange_HasPendingAnimation() { final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 0, 1, 1); assertThat(hasPendingAnimation).isTrue(); } @Test public void testAnimateChange_HasRunningAnimationWhileNoPositionChange_NoPendingAnimation() { // Set pending move animations mDashboardItemAnimator.animateMove(mViewHolder, 0, 0, 1, 1); final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 1, 0, 1); assertThat(hasPendingAnimation).isFalse(); } } Loading
src/com/android/settings/dashboard/DashboardItemAnimator.java +10 −3 Original line number Diff line number Diff line Loading @@ -18,15 +18,22 @@ package com.android.settings.dashboard; import android.support.v4.view.ViewCompat; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.RecyclerView.ViewHolder; import com.android.settingslib.drawer.Tile; public class DashboardItemAnimator extends DefaultItemAnimator { @Override public boolean animateChange(ViewHolder oldHolder, ViewHolder newHolder, int fromX, int fromY, int toX, int toY) { if (oldHolder == newHolder) { final Object tag = oldHolder.itemView.getTag(); if (tag instanceof Tile && oldHolder == newHolder) { // When this view has other move animation running, skip this value to avoid // animations interrupt each other. if (!isRunning()) { fromX += ViewCompat.getTranslationX(oldHolder.itemView); fromY += ViewCompat.getTranslationY(oldHolder.itemView); } if (fromX == toX && fromY == toY) { dispatchMoveFinished(oldHolder); return false; Loading
src/com/android/settings/dashboard/DashboardSummary.java +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ public class DashboardSummary extends InstrumentedPreferenceFragment public void onConditionsChanged() { Log.d(TAG, "onConditionsChanged"); mAdapter.setConditions(mConditionManager.getConditions()); mDashboard.scrollToPosition(0); } private class SuggestionLoader extends AsyncTask<Void, Void, List<Tile>> { Loading
tests/robotests/src/com/android/settings/dashboard/DashboardItemAnimatorTest.java +13 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.widget.TextView; import com.android.settings.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; import com.android.settings.dashboard.SupportItemAdapter.ViewHolder; import com.android.settingslib.drawer.Tile; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -41,20 +42,30 @@ public class DashboardItemAnimatorTest { final Context context = ShadowApplication.getInstance().getApplicationContext(); mDashboardItemAnimator = new DashboardItemAnimator(); mViewHolder = new ViewHolder(new TextView(context)); mViewHolder.itemView.setTag(new Tile()); } @Test public void testAnimateChange_NoOffset_NoPendingAnimation() { public void testAnimateChange_NoPositionChange_NoPendingAnimation() { final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 1, 0, 1); assertThat(hasPendingAnimation).isFalse(); } @Test public void testAnimateChange_HasOffset_HasPendingAnimation() { public void testAnimateChange_HasPositionChange_HasPendingAnimation() { final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 0, 1, 1); assertThat(hasPendingAnimation).isTrue(); } @Test public void testAnimateChange_HasRunningAnimationWhileNoPositionChange_NoPendingAnimation() { // Set pending move animations mDashboardItemAnimator.animateMove(mViewHolder, 0, 0, 1, 1); final boolean hasPendingAnimation = mDashboardItemAnimator .animateChange(mViewHolder, mViewHolder, 0, 1, 0, 1); assertThat(hasPendingAnimation).isFalse(); } }