Improve entrance animations on convo page

By moving loading in each controller to the same thread.
There will still be shifting as the conversation prefs are added, but it
won't be the over thte top shift up and shift down motion that existed
prior to this cl.

Test: manual
Fixes: 188734400
Change-Id: I202981b603b8f9308b2b352a0939182910869cd6
This commit is contained in:
Julia Reynolds
2021-05-24 09:02:24 -04:00
parent 86af9e9da0
commit 05f20f44f2
5 changed files with 19 additions and 53 deletions

View File

@@ -29,7 +29,7 @@
<PreferenceCategory <PreferenceCategory
android:key="important_conversations" android:key="important_conversations"
android:title="@string/important_conversations" android:title="@string/important_conversations"
android:visibility="gone" settings:isPreferenceVisible="false"
settings:allowDividerAbove="false" settings:allowDividerAbove="false"
settings:allowDividerBelow="true" > settings:allowDividerBelow="true" >
<Preference <Preference
@@ -48,6 +48,7 @@
<PreferenceCategory <PreferenceCategory
android:title="@string/other_conversations" android:title="@string/other_conversations"
android:key="other_conversations" android:key="other_conversations"
settings:isPreferenceVisible="false"
settings:allowDividerAbove="true" settings:allowDividerAbove="true"
settings:allowDividerBelow="false" /> settings:allowDividerBelow="false" />
@@ -55,6 +56,7 @@
<PreferenceCategory <PreferenceCategory
android:title="@string/recent_conversations" android:title="@string/recent_conversations"
android:key="recent_conversations" android:key="recent_conversations"
settings:isPreferenceVisible="false"
settings:allowDividerAbove="true" settings:allowDividerAbove="true"
settings:allowDividerBelow="false" /> settings:allowDividerBelow="false" />

View File

@@ -68,21 +68,10 @@ public class AllConversationsPreferenceController extends ConversationListPrefer
public void updateState(Preference preference) { public void updateState(Preference preference) {
PreferenceCategory pref = (PreferenceCategory) preference; PreferenceCategory pref = (PreferenceCategory) preference;
// Load conversations // Load conversations
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... unused) {
mConversations = mBackend.getConversations(false).getList();
Collections.sort(mConversations, mConversationComparator);
return null;
}
@Override mConversations = mBackend.getConversations(false).getList();
protected void onPostExecute(Void unused) { Collections.sort(mConversations, mConversationComparator);
if (mContext == null) {
return; populateList(mConversations, pref);
}
populateList(mConversations, pref);
}
}.execute();
} }
} }

View File

@@ -63,7 +63,7 @@ public abstract class ConversationListPreferenceController extends AbstractPrefe
protected void populateList(List<ConversationChannelWrapper> conversations, protected void populateList(List<ConversationChannelWrapper> conversations,
PreferenceGroup containerGroup) { PreferenceGroup containerGroup) {
// TODO: if preference has children, compare with newly loaded list containerGroup.setVisible(false);
containerGroup.removeAll(); containerGroup.removeAll();
if (conversations != null) { if (conversations != null) {
populateConversations(conversations, containerGroup); populateConversations(conversations, containerGroup);
@@ -72,11 +72,11 @@ public abstract class ConversationListPreferenceController extends AbstractPrefe
if (containerGroup.getPreferenceCount() == 0) { if (containerGroup.getPreferenceCount() == 0) {
containerGroup.setVisible(false); containerGroup.setVisible(false);
} else { } else {
containerGroup.setVisible(true);
Preference summaryPref = getSummaryPreference(); Preference summaryPref = getSummaryPreference();
if (summaryPref != null) { if (summaryPref != null) {
containerGroup.addPreference(summaryPref); containerGroup.addPreference(summaryPref);
} }
containerGroup.setVisible(true);
} }
} }

View File

@@ -67,22 +67,9 @@ public class PriorityConversationsPreferenceController extends
public void updateState(Preference preference) { public void updateState(Preference preference) {
PreferenceCategory pref = (PreferenceCategory) preference; PreferenceCategory pref = (PreferenceCategory) preference;
// Load conversations // Load conversations
new AsyncTask<Void, Void, Void>() { mConversations = mBackend.getConversations(true).getList();
@Override Collections.sort(mConversations, mConversationComparator);
protected Void doInBackground(Void... unused) {
mConversations = mBackend.getConversations(true).getList();
Collections.sort(mConversations, mConversationComparator);
return null;
}
@Override
protected void onPostExecute(Void unused) {
if (mContext == null) {
return;
}
populateList(mConversations, pref);
}
}.execute();
populateList(mConversations, pref);
} }
} }

View File

@@ -104,26 +104,14 @@ public class RecentConversationsPreferenceController extends AbstractPreferenceC
public void updateState(Preference preference) { public void updateState(Preference preference) {
PreferenceCategory pref = (PreferenceCategory) preference; PreferenceCategory pref = (PreferenceCategory) preference;
// Load conversations // Load conversations
new AsyncTask<Void, Void, Void>() { try {
@Override mConversations = mPs.getRecentConversations().getList();
protected Void doInBackground(Void... unused) { } catch (RemoteException e) {
try { Slog.w(TAG, "Could get recents", e);
mConversations = mPs.getRecentConversations().getList(); }
} catch (RemoteException e) { Collections.sort(mConversations, mConversationComparator);
Slog.w(TAG, "Could get recents", e);
}
Collections.sort(mConversations, mConversationComparator);
return null;
}
@Override populateList(mConversations, pref);
protected void onPostExecute(Void unused) {
if (mContext == null) {
return;
}
populateList(mConversations, pref);
}
}.execute();
} }