Loading src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java +36 −5 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ class LocaleDragAndDropAdapter private final Context mContext; private final List<LocaleStore.LocaleInfo> mFeedItemList; private final ItemTouchHelper mItemTouchHelper; private RecyclerView mParentView = null; private boolean mRemoveMode = false; private boolean mDragEnabled = true; private NumberFormat mNumberFormatter = NumberFormat.getNumberInstance(); Loading Loading @@ -132,6 +133,7 @@ class LocaleDragAndDropAdapter } public void setRecyclerView(RecyclerView rv) { mParentView = rv; mItemTouchHelper.attachToRecyclerView(rv); } Loading Loading @@ -239,18 +241,47 @@ class LocaleDragAndDropAdapter public void doTheUpdate() { int count = mFeedItemList.size(); Locale[] newList = new Locale[count]; final Locale[] newList = new Locale[count]; for (int i = 0; i < count; i++) { LocaleStore.LocaleInfo li = mFeedItemList.get(i); final LocaleStore.LocaleInfo li = mFeedItemList.get(i); newList[i] = li.getLocale(); } LocaleList ll = new LocaleList(newList); LocalePicker.updateLocales(ll); final LocaleList ll = new LocaleList(newList); updateLocalesWhenAnimationStops(ll); } private LocaleList mLocalesToSetNext = null; private LocaleList mLocalesSetLast = null; public void updateLocalesWhenAnimationStops(final LocaleList localeList) { if (localeList.equals(mLocalesToSetNext)) { return; } // This will only update the Settings application to make things feel more responsive, // the system will be updated later, when animation stopped. LocaleList.setDefault(localeList); mLocalesToSetNext = localeList; final RecyclerView.ItemAnimator itemAnimator = mParentView.getItemAnimator(); itemAnimator.isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() { @Override public void onAnimationsFinished() { if (mLocalesToSetNext == null || mLocalesToSetNext.equals(mLocalesSetLast)) { // All animations finished, but the locale list did not change return; } LocalePicker.updateLocales(mLocalesToSetNext); mLocalesSetLast = mLocalesToSetNext; mLocalesToSetNext = null; mNumberFormatter = NumberFormat.getNumberInstance(Locale.getDefault()); } }); } private void setDragEnabled(boolean enabled) { mDragEnabled = enabled; Loading Loading
src/com/android/settings/localepicker/LocaleDragAndDropAdapter.java +36 −5 Original line number Diff line number Diff line Loading @@ -48,6 +48,7 @@ class LocaleDragAndDropAdapter private final Context mContext; private final List<LocaleStore.LocaleInfo> mFeedItemList; private final ItemTouchHelper mItemTouchHelper; private RecyclerView mParentView = null; private boolean mRemoveMode = false; private boolean mDragEnabled = true; private NumberFormat mNumberFormatter = NumberFormat.getNumberInstance(); Loading Loading @@ -132,6 +133,7 @@ class LocaleDragAndDropAdapter } public void setRecyclerView(RecyclerView rv) { mParentView = rv; mItemTouchHelper.attachToRecyclerView(rv); } Loading Loading @@ -239,18 +241,47 @@ class LocaleDragAndDropAdapter public void doTheUpdate() { int count = mFeedItemList.size(); Locale[] newList = new Locale[count]; final Locale[] newList = new Locale[count]; for (int i = 0; i < count; i++) { LocaleStore.LocaleInfo li = mFeedItemList.get(i); final LocaleStore.LocaleInfo li = mFeedItemList.get(i); newList[i] = li.getLocale(); } LocaleList ll = new LocaleList(newList); LocalePicker.updateLocales(ll); final LocaleList ll = new LocaleList(newList); updateLocalesWhenAnimationStops(ll); } private LocaleList mLocalesToSetNext = null; private LocaleList mLocalesSetLast = null; public void updateLocalesWhenAnimationStops(final LocaleList localeList) { if (localeList.equals(mLocalesToSetNext)) { return; } // This will only update the Settings application to make things feel more responsive, // the system will be updated later, when animation stopped. LocaleList.setDefault(localeList); mLocalesToSetNext = localeList; final RecyclerView.ItemAnimator itemAnimator = mParentView.getItemAnimator(); itemAnimator.isRunning(new RecyclerView.ItemAnimator.ItemAnimatorFinishedListener() { @Override public void onAnimationsFinished() { if (mLocalesToSetNext == null || mLocalesToSetNext.equals(mLocalesSetLast)) { // All animations finished, but the locale list did not change return; } LocalePicker.updateLocales(mLocalesToSetNext); mLocalesSetLast = mLocalesToSetNext; mLocalesToSetNext = null; mNumberFormatter = NumberFormat.getNumberInstance(Locale.getDefault()); } }); } private void setDragEnabled(boolean enabled) { mDragEnabled = enabled; Loading