[DataUsage] Adjusting the control of display sequence

Showing a usage graph before end of statistic would lead to incorrect
height of usage graph, and another update would lead to layout moved a
little bit.

This change tries to improve it through:
1. Start the loading animation earlier, and stop animation when
   statistics loaded.
   (Only effective when UI re-create.)
2. Update the UI only when statistics are ready.

Bug: 187019210
Test: robotest ChartDataUsagePreferenceTest DataUsageListTest
Change-Id: Ic83f2422b6c6d55948110d652ee24234f43b6445
This commit is contained in:
Bonian Chen
2022-03-14 09:45:33 +08:00
parent ec9cee3c27
commit b8491032d7
4 changed files with 102 additions and 56 deletions

View File

@@ -151,7 +151,20 @@ public class DataUsageList extends DataUsageBaseFragment
public void onViewCreated(View v, Bundle savedInstanceState) {
super.onViewCreated(v, savedInstanceState);
// Show loading
mLoadingViewController = new LoadingViewController(
v.findViewById(R.id.loading_container), getListView());
mLoadingViewController.showLoadingViewDelayed();
}
private void onEndOfLoading() {
if (mHeader != null) {
return;
}
mHeader = setPinnedHeaderView(R.layout.apps_filter_spinner);
mCycleSpinner = mHeader.findViewById(R.id.filter_spinner);
mHeader.findViewById(R.id.filter_settings).setOnClickListener(btn -> {
final Bundle args = new Bundle();
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
@@ -162,8 +175,6 @@ public class DataUsageList extends DataUsageBaseFragment
.setArguments(args)
.launch();
});
mCycleSpinner = mHeader.findViewById(R.id.filter_spinner);
mCycleSpinner.setVisibility(View.GONE);
mCycleAdapter = new CycleAdapter(mCycleSpinner.getContext(), new SpinnerInterface() {
@Override
public void setAdapter(CycleAdapter cycleAdapter) {
@@ -195,10 +206,6 @@ public class DataUsageList extends DataUsageBaseFragment
super.sendAccessibilityEvent(host, eventType);
}
});
mLoadingViewController = new LoadingViewController(
getView().findViewById(R.id.loading_container), getListView());
mLoadingViewController.showLoadingViewDelayed();
}
@Override
@@ -206,6 +213,10 @@ public class DataUsageList extends DataUsageBaseFragment
super.onResume();
mDataStateListener.start(mSubId);
if (mChart != null) {
mChart.onPreparingChartData();
}
// kick off loader for network history
// TODO: consider chaining two loaders together instead of reloading
// network history when showing app detail.
@@ -526,11 +537,13 @@ public class DataUsageList extends DataUsageBaseFragment
@Override
public void onLoadFinished(Loader<List<NetworkCycleChartData>> loader,
List<NetworkCycleChartData> data) {
mLoadingViewController.showContent(false /* animate */);
onEndOfLoading();
if (mLoadingViewController != null) {
mLoadingViewController.showContent(false /* animate */);
}
mCycleData = data;
// calculate policy cycles based on available data
updatePolicy();
mCycleSpinner.setVisibility(View.VISIBLE);
}
@Override