Merge "Add fade in animation for battery usage chart group"

This commit is contained in:
YK Hung
2022-08-23 12:26:09 +00:00
committed by Android (Google) Code Review
3 changed files with 45 additions and 22 deletions

View File

@@ -31,25 +31,33 @@
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:text="@string/battery_usage_chart_graph_hint_last_full_charge" /> android:text="@string/battery_usage_chart_graph_hint_last_full_charge" />
<com.android.settings.fuelgauge.batteryusage.BatteryChartView <LinearLayout
android:id="@+id/daily_battery_chart" android:id="@+id/battery_chart_group"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="170dp" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" android:orientation="vertical"
android:visibility="gone" android:alpha="0">
android:contentDescription="@string/daily_battery_usage_chart" <com.android.settings.fuelgauge.batteryusage.BatteryChartView
android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/daily_battery_chart"
settings:textColor="?android:attr/textColorSecondary" /> android:layout_width="match_parent"
android:layout_height="170dp"
android:layout_marginBottom="16dp"
android:visibility="gone"
android:contentDescription="@string/daily_battery_usage_chart"
android:textAppearance="?android:attr/textAppearanceSmall"
settings:textColor="?android:attr/textColorSecondary" />
<com.android.settings.fuelgauge.batteryusage.BatteryChartView
android:id="@+id/hourly_battery_chart"
android:layout_width="match_parent"
android:layout_height="170dp"
android:layout_marginBottom="16dp"
android:visibility="visible"
android:contentDescription="@string/hourly_battery_usage_chart"
android:textAppearance="?android:attr/textAppearanceSmall"
settings:textColor="?android:attr/textColorSecondary" />
</LinearLayout>
<com.android.settings.fuelgauge.batteryusage.BatteryChartView
android:id="@+id/hourly_battery_chart"
android:layout_width="match_parent"
android:layout_height="170dp"
android:layout_marginBottom="16dp"
android:visibility="visible"
android:contentDescription="@string/hourly_battery_usage_chart"
android:textAppearance="?android:attr/textAppearanceSmall"
settings:textColor="?android:attr/textColorSecondary" />
<!-- Use non-scalable text size from text_size_small_material --> <!-- Use non-scalable text size from text_size_small_material -->
<TextView <TextView
android:id="@+id/companion_text" android:id="@+id/companion_text"

View File

@@ -68,6 +68,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
private static final int ENABLED_ICON_ALPHA = 255; private static final int ENABLED_ICON_ALPHA = 255;
private static final int DISABLED_ICON_ALPHA = 255 / 3; private static final int DISABLED_ICON_ALPHA = 255 / 3;
private static final long FADE_ANIMATION_DURATION = 350L;
private static final long VALID_USAGE_TIME_DURATION = DateUtils.HOUR_IN_MILLIS * 2; private static final long VALID_USAGE_TIME_DURATION = DateUtils.HOUR_IN_MILLIS * 2;
private static final long VALID_DIFF_DURATION = DateUtils.MINUTE_IN_MILLIS * 3; private static final long VALID_DIFF_DURATION = DateUtils.MINUTE_IN_MILLIS * 3;
@@ -104,6 +105,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
private boolean mIs24HourFormat; private boolean mIs24HourFormat;
private boolean mIsFooterPrefAdded = false; private boolean mIsFooterPrefAdded = false;
private View mBatteryChartViewGroup;
private PreferenceScreen mPreferenceScreen; private PreferenceScreen mPreferenceScreen;
private FooterPreference mFooterPreference; private FooterPreference mFooterPreference;
// Daily view model only saves abbreviated day of week texts (e.g. MON). This field saves the // Daily view model only saves abbreviated day of week texts (e.g. MON). This field saves the
@@ -204,7 +206,7 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
mPrefContext = screen.getContext(); mPrefContext = screen.getContext();
mAppListPrefGroup = screen.findPreference(mPreferenceKey); mAppListPrefGroup = screen.findPreference(mPreferenceKey);
mAppListPrefGroup.setOrderingAsAdded(false); mAppListPrefGroup.setOrderingAsAdded(false);
mAppListPrefGroup.setTitle(mPrefContext.getString(R.string.battery_app_usage)); mAppListPrefGroup.setTitle("");
mFooterPreference = screen.findPreference(KEY_FOOTER_PREF); mFooterPreference = screen.findPreference(KEY_FOOTER_PREF);
// Removes footer first until usage data is loaded to avoid flashing. // Removes footer first until usage data is loaded to avoid flashing.
if (mFooterPreference != null) { if (mFooterPreference != null) {
@@ -262,6 +264,8 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) { final Map<Long, Map<String, BatteryHistEntry>> batteryHistoryMap) {
Log.d(TAG, "setBatteryHistoryMap() " + (batteryHistoryMap == null ? "null" Log.d(TAG, "setBatteryHistoryMap() " + (batteryHistoryMap == null ? "null"
: ("size=" + batteryHistoryMap.size()))); : ("size=" + batteryHistoryMap.size())));
// Ensure the battery chart group is visible for users.
animateBatteryChartViewGroup();
final BatteryLevelData batteryLevelData = final BatteryLevelData batteryLevelData =
DataProcessor.getBatteryLevelData(mContext, mHandler, batteryHistoryMap, DataProcessor.getBatteryLevelData(mContext, mHandler, batteryHistoryMap,
batteryUsageMap -> { batteryUsageMap -> {
@@ -304,8 +308,13 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
void setBatteryChartView(@NonNull final BatteryChartView dailyChartView, void setBatteryChartView(@NonNull final BatteryChartView dailyChartView,
@NonNull final BatteryChartView hourlyChartView) { @NonNull final BatteryChartView hourlyChartView) {
final View parentView = (View) dailyChartView.getParent();
if (parentView != null && parentView.getId() == R.id.battery_chart_group) {
mBatteryChartViewGroup = (View) dailyChartView.getParent();
}
if (mDailyChartView != dailyChartView || mHourlyChartView != hourlyChartView) { if (mDailyChartView != dailyChartView || mHourlyChartView != hourlyChartView) {
mHandler.post(() -> setBatteryChartViewInner(dailyChartView, hourlyChartView)); mHandler.post(() -> setBatteryChartViewInner(dailyChartView, hourlyChartView));
animateBatteryChartViewGroup();
} }
} }
@@ -615,6 +624,13 @@ public class BatteryChartPreferenceController extends AbstractPreferenceControll
return !DataProcessor.contains(packageName, mNotAllowShowSummaryPackages); return !DataProcessor.contains(packageName, mNotAllowShowSummaryPackages);
} }
private void animateBatteryChartViewGroup() {
if (mBatteryChartViewGroup != null && mBatteryChartViewGroup.getAlpha() == 0) {
mBatteryChartViewGroup.animate().alpha(1f).setDuration(FADE_ANIMATION_DURATION)
.start();
}
}
private void addFooterPreferenceIfNeeded(boolean containAppItems) { private void addFooterPreferenceIfNeeded(boolean containAppItems) {
if (mIsFooterPrefAdded || mFooterPreference == null) { if (mIsFooterPrefAdded || mFooterPreference == null) {
return; return;

View File

@@ -106,12 +106,11 @@ public class BatteryHistoryPreference extends Preference {
return; return;
} }
if (mIsChartGraphEnabled) { if (mIsChartGraphEnabled) {
final TextView companionTextView = (TextView) view.findViewById(R.id.companion_text);
mDailyChartView = (BatteryChartView) view.findViewById(R.id.daily_battery_chart); mDailyChartView = (BatteryChartView) view.findViewById(R.id.daily_battery_chart);
mDailyChartView.setCompanionTextView( mDailyChartView.setCompanionTextView(companionTextView);
(TextView) view.findViewById(R.id.companion_text));
mHourlyChartView = (BatteryChartView) view.findViewById(R.id.hourly_battery_chart); mHourlyChartView = (BatteryChartView) view.findViewById(R.id.hourly_battery_chart);
mHourlyChartView.setCompanionTextView( mHourlyChartView.setCompanionTextView(companionTextView);
(TextView) view.findViewById(R.id.companion_text));
if (mChartPreferenceController != null) { if (mChartPreferenceController != null) {
mChartPreferenceController.setBatteryChartView(mDailyChartView, mHourlyChartView); mChartPreferenceController.setBatteryChartView(mDailyChartView, mHourlyChartView);
} }