Merge "Fix footer preference may flash one time when entering" into sc-dev
This commit is contained in:
@@ -6497,8 +6497,10 @@
|
||||
<string name="battery_usage_for_total_time">Total: <xliff:g id="time">%s</xliff:g></string>
|
||||
<!-- [CHAR_LIMIT=NONE] Battery usage item for background usage time -->
|
||||
<string name="battery_usage_for_background_time">Background: <xliff:g id="time">%s</xliff:g></string>
|
||||
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer contentt -->
|
||||
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer content -->
|
||||
<string name="battery_usage_screen_footer">Battery usage data is approximate and doesn\'t measure usage when phone is charging</string>
|
||||
<!-- [CHAR_LIMIT=NONE] Battery usage main screen footer for empty content -->
|
||||
<string name="battery_usage_screen_footer_empty">Battery usage data will be available after you use your phone for a few hours</string>
|
||||
<!-- [CHAR_LIMIT=NONE] Accessibility content description for battery chart view. -->
|
||||
<string name="battery_usage_chart">Battery usage chart</string>
|
||||
<!-- Process Stats strings -->
|
||||
|
@@ -28,6 +28,7 @@
|
||||
android:key="app_list"/>
|
||||
|
||||
<com.android.settingslib.widget.FooterPreference
|
||||
android:key="battery_graph_footer"
|
||||
android:title="@string/battery_usage_screen_footer"
|
||||
android:selectable="false"
|
||||
settings:searchable="false"/>
|
||||
|
@@ -48,6 +48,7 @@ import com.android.settingslib.core.lifecycle.events.OnDestroy;
|
||||
import com.android.settingslib.core.lifecycle.events.OnResume;
|
||||
import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
|
||||
import com.android.settingslib.utils.StringUtil;
|
||||
import com.android.settingslib.widget.FooterPreference;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
@@ -62,6 +63,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
OnSaveInstanceState, BatteryChartView.OnSelectListener, OnResume,
|
||||
ExpandDividerPreference.OnExpandListener {
|
||||
private static final String TAG = "BatteryChartPreferenceController";
|
||||
private static final String KEY_FOOTER_PREF = "battery_graph_footer";
|
||||
private static final int ADD_FOOTER_DELAYED_MS = 250;
|
||||
|
||||
/** Desired battery history size for timestamp slots. */
|
||||
public static final int DESIRED_HISTORY_SIZE = 25;
|
||||
private static final int CHART_LEVEL_ARRAY_SIZE = 13;
|
||||
@@ -90,6 +94,9 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
@VisibleForTesting int mTrapezoidIndex = BatteryChartView.SELECTED_INDEX_INVALID;
|
||||
|
||||
private boolean mIs24HourFormat = false;
|
||||
private boolean mIsFooterPrefAdded = false;
|
||||
private PreferenceScreen mPreferenceScreen;
|
||||
private FooterPreference mFooterPreference;
|
||||
|
||||
private final String mPreferenceKey;
|
||||
private final SettingsActivity mActivity;
|
||||
@@ -178,9 +185,15 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
@Override
|
||||
public void displayPreference(PreferenceScreen screen) {
|
||||
super.displayPreference(screen);
|
||||
mPreferenceScreen = screen;
|
||||
mPrefContext = screen.getContext();
|
||||
mAppListPrefGroup = screen.findPreference(mPreferenceKey);
|
||||
mAppListPrefGroup.setOrderingAsAdded(false);
|
||||
mFooterPreference = screen.findPreference(KEY_FOOTER_PREF);
|
||||
// Removes footer first until usage data is loaded to avoid flashing.
|
||||
if (mFooterPreference != null) {
|
||||
screen.removePreference(mFooterPreference);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -264,6 +277,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
mBatteryIndexedMap = null;
|
||||
mBatteryHistoryKeys = null;
|
||||
mBatteryHistoryLevels = null;
|
||||
addFooterPreferenceIfNeeded(false);
|
||||
return;
|
||||
}
|
||||
mBatteryHistoryKeys = getBatteryHistoryKeys(batteryHistoryMap);
|
||||
@@ -347,6 +361,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
private void addAllPreferences() {
|
||||
final List<BatteryDiffEntry> entries =
|
||||
mBatteryIndexedMap.get(Integer.valueOf(mTrapezoidIndex));
|
||||
addFooterPreferenceIfNeeded(!entries.isEmpty());
|
||||
if (entries == null) {
|
||||
Log.w(TAG, "cannot find BatteryDiffEntry for:" + mTrapezoidIndex);
|
||||
return;
|
||||
@@ -575,6 +590,20 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
|
||||
mBatteryChartView.setLatestTimestamp(latestTimestamp);
|
||||
}
|
||||
|
||||
private void addFooterPreferenceIfNeeded(boolean containAppItems) {
|
||||
if (mIsFooterPrefAdded || mFooterPreference == null) {
|
||||
return;
|
||||
}
|
||||
mIsFooterPrefAdded = true;
|
||||
mFooterPreference.setTitle(mPrefContext.getString(
|
||||
containAppItems
|
||||
? R.string.battery_usage_screen_footer
|
||||
: R.string.battery_usage_screen_footer_empty));
|
||||
mHandler.postDelayed(
|
||||
() -> mPreferenceScreen.addPreference(mFooterPreference),
|
||||
ADD_FOOTER_DELAYED_MS);
|
||||
}
|
||||
|
||||
private static String utcToLocalTime(long[] timestamps) {
|
||||
final StringBuilder builder = new StringBuilder();
|
||||
for (int index = 0; index < timestamps.length; index++) {
|
||||
|
Reference in New Issue
Block a user