Fix flicker for Mobile data & Wi-Fi page

Both "Mobile data usage" & "Non-carrier data usage".

By,
1. Add header in onCreate() instead of onViewCreated()
2. Keep the space for Spinner, and preload initial cycles
3. Keep the space for 3 usage summaries

Bug: 191730864
Test: manual
Change-Id: I8c309c5f51ce6290383a2d10f75e41d0f207d61a
This commit is contained in:
Chaohui Wang
2022-04-28 19:09:02 +08:00
parent 3663986909
commit ddedb31f6e
5 changed files with 53 additions and 160 deletions

View File

@@ -31,6 +31,8 @@ public class SpinnerPreference extends Preference implements CycleAdapter.Spinne
private AdapterView.OnItemSelectedListener mListener;
private Object mCurrentObject;
private int mPosition;
private View mItemView;
private boolean mItemViewVisible = false;
public SpinnerPreference(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -63,12 +65,24 @@ public class SpinnerPreference extends Preference implements CycleAdapter.Spinne
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
mItemView = holder.itemView;
mItemView.setVisibility(mItemViewVisible ? View.VISIBLE : View.INVISIBLE);
Spinner spinner = (Spinner) holder.findViewById(R.id.cycles_spinner);
spinner.setAdapter(mAdapter);
spinner.setSelection(mPosition);
spinner.setOnItemSelectedListener(mOnSelectedListener);
}
void setHasCycles(boolean hasData) {
setVisible(hasData);
if (hasData) {
mItemViewVisible = true;
if (mItemView != null) {
mItemView.setVisibility(View.VISIBLE);
}
}
}
@Override
protected void performClick(View view) {
view.findViewById(R.id.cycles_spinner).performClick();