summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java67
2 files changed, 53 insertions, 17 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
index 6479b0ce6833..4cfa042cb23b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSAnimator.java
@@ -17,11 +17,8 @@ package com.android.systemui.qs;
import android.util.Log;
import android.view.View;
import android.view.View.OnLayoutChangeListener;
-import android.view.ViewGroup;
-import android.view.animation.DecelerateInterpolator;
import android.view.animation.PathInterpolator;
import android.widget.TextView;
-import com.android.systemui.Interpolators;
import com.android.systemui.qs.PagedTileLayout.PageListener;
import com.android.systemui.qs.QSPanel.QSTileLayout;
import com.android.systemui.qs.QSTile.Host.Callback;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
index 93e075d945db..6c1345e3e613 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatteryTile.java
@@ -15,16 +15,19 @@
*/
package com.android.systemui.qs.tiles;
+import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.graphics.drawable.Drawable;
import android.os.Handler;
-import android.provider.Settings;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.RelativeSizeSpan;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.View.OnAttachStateChangeListener;
+import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Checkable;
import android.widget.ImageView;
@@ -48,6 +51,7 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
private int mLevel;
private boolean mPowerSave;
private boolean mCharging;
+ private boolean mDetailShown;
public BatteryTile(Host host) {
super(host);
@@ -120,20 +124,21 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
mLevel = level;
mCharging = charging;
refreshState((Integer) level);
- if (mBatteryDetail.mCurrentView != null) {
- mBatteryDetail.bindView();
+ if (mDetailShown) {
+ mBatteryDetail.postBindView();
}
}
@Override
public void onPowerSaveChanged(boolean isPowerSave) {
mPowerSave = isPowerSave;
- if (mBatteryDetail.mCurrentView != null) {
- mBatteryDetail.bindView();
+ if (mDetailShown) {
+ mBatteryDetail.postBindView();
}
}
- private final class BatteryDetail implements DetailAdapter, View.OnClickListener {
+ private final class BatteryDetail implements DetailAdapter, OnClickListener,
+ OnAttachStateChangeListener {
private final BatteryMeterDrawable mDrawable = new BatteryMeterDrawable(mHost.getContext(),
new Handler(), mHost.getContext().getColor(R.color.batterymeter_frame_color));
private View mCurrentView;
@@ -155,10 +160,20 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
false);
}
mCurrentView = convertView;
+ mCurrentView.addOnAttachStateChangeListener(this);
bindView();
return convertView;
}
+ private void postBindView() {
+ mCurrentView.post(new Runnable() {
+ @Override
+ public void run() {
+ bindView();
+ }
+ });
+ }
+
private void bindView() {
mDrawable.onBatteryLevelChanged(100, false, false);
mDrawable.onPowerSaveChanged(true);
@@ -166,15 +181,15 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
((ImageView) mCurrentView.findViewById(android.R.id.icon)).setImageDrawable(mDrawable);
Checkable checkbox = (Checkable) mCurrentView.findViewById(android.R.id.toggle);
checkbox.setChecked(mPowerSave);
- if (mCharging) {
- BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() {
- @Override
- public void onBatteryInfoLoaded(BatteryInfo info) {
- if (mCurrentView != null) {
- bindBatteryInfo(info);
- }
+ BatteryInfo.getBatteryInfo(mContext, new BatteryInfo.Callback() {
+ @Override
+ public void onBatteryInfoLoaded(BatteryInfo info) {
+ if (mCurrentView != null) {
+ bindBatteryInfo(info);
}
- });
+ }
+ });
+ if (mCharging) {
((TextView) mCurrentView.findViewById(android.R.id.title)).setText(
R.string.battery_detail_charging_summary);
mCurrentView.findViewById(android.R.id.icon).setVisibility(View.INVISIBLE);
@@ -228,5 +243,29 @@ public class BatteryTile extends QSTile<QSTile.State> implements BatteryControll
public int getMetricsCategory() {
return MetricsEvent.QS_BATTERY_DETAIL;
}
+
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ if (!mDetailShown) {
+ mDetailShown = true;
+ v.getContext().registerReceiver(mReceiver,
+ new IntentFilter(Intent.ACTION_TIME_TICK));
+ }
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ if (mDetailShown) {
+ mDetailShown = false;
+ v.getContext().unregisterReceiver(mReceiver);
+ }
+ }
+
+ private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ postBindView();
+ }
+ };
}
}