diff --git a/packages/SystemUI/res/drawable/indeterminate.xml b/packages/SystemUI/res/drawable/indeterminate.xml
new file mode 100644
index 0000000000000..35e11e5f66b25
--- /dev/null
+++ b/packages/SystemUI/res/drawable/indeterminate.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/indeterminate_anim.xml b/packages/SystemUI/res/drawable/indeterminate_anim.xml
new file mode 100644
index 0000000000000..52c6d168d5e58
--- /dev/null
+++ b/packages/SystemUI/res/drawable/indeterminate_anim.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
diff --git a/packages/SystemUI/res/layout/status_bar_expanded_header.xml b/packages/SystemUI/res/layout/status_bar_expanded_header.xml
index 1226fc5ed2a7a..079b97b05a6c6 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded_header.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded_header.xml
@@ -148,6 +148,16 @@
android:layout_alignParentBottom="true"
/>
+
+
#99FFFFFF
#24B0BEC5
#66FFFFFF
+ #99009688
#99FFFFFF
#33FFFFFF
#FFFFFFFF
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index c3144c12d58b2..1fa97bd887f82 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -234,8 +234,9 @@ public class QSPanel extends ViewGroup {
}
@Override
public void onScanStateChanged(boolean state) {
+ r.scanState = state;
if (mDetailRecord == r) {
- fireScanStateChanged(state);
+ fireScanStateChanged(r.scanState);
}
}
};
@@ -310,9 +311,10 @@ public class QSPanel extends ViewGroup {
mDetailContent.removeAllViews();
mDetail.bringToFront();
mDetailContent.addView(r.detailView);
- mDetailRecord = r;
+ setDetailRecord(r);
} else {
listener = mTeardownDetailWhenDone;
+ fireScanStateChanged(false);
}
fireShowingDetail(show ? detailAdapter : null);
mClipper.animateCircularClip(x, y, show, listener);
@@ -425,6 +427,14 @@ public class QSPanel extends ViewGroup {
}
}
+ private void setDetailRecord(Record r) {
+ if (r == mDetailRecord) return;
+ mDetailRecord = r;
+ final boolean scanState = mDetailRecord instanceof TileRecord
+ && ((TileRecord) mDetailRecord).scanState;
+ fireScanStateChanged(scanState);
+ }
+
private class H extends Handler {
private static final int SHOW_DETAIL = 1;
private static final int SET_TILE_VISIBILITY = 2;
@@ -448,12 +458,13 @@ public class QSPanel extends ViewGroup {
QSTileView tileView;
int row;
int col;
+ boolean scanState;
}
private final AnimatorListenerAdapter mTeardownDetailWhenDone = new AnimatorListenerAdapter() {
public void onAnimationEnd(Animator animation) {
mDetailContent.removeAllViews();
- mDetailRecord = null;
+ setDetailRecord(null);
};
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
index 39b20220f5fe2..8bc7dd49eb837 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.Intent;
import android.graphics.Outline;
import android.graphics.Rect;
+import android.graphics.drawable.Animatable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.TypedValue;
@@ -68,6 +69,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
private View mQsDetailHeader;
private TextView mQsDetailHeaderTitle;
private Switch mQsDetailHeaderSwitch;
+ private ImageView mQsDetailHeaderProgress;
private View mEmergencyCallsOnly;
private TextView mBatteryLevel;
private TextView mAlarmStatus;
@@ -137,6 +139,7 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
mQsDetailHeader.setAlpha(0);
mQsDetailHeaderTitle = (TextView) mQsDetailHeader.findViewById(android.R.id.title);
mQsDetailHeaderSwitch = (Switch) mQsDetailHeader.findViewById(android.R.id.toggle);
+ mQsDetailHeaderProgress = (ImageView) findViewById(R.id.qs_detail_header_progress);
mEmergencyCallsOnly = findViewById(R.id.header_emergency_calls_only);
mBatteryLevel = (TextView) findViewById(R.id.battery_level);
mAlarmStatus = (TextView) findViewById(R.id.alarm_status);
@@ -658,6 +661,8 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
}
private final QSPanel.Callback mQsPanelCallback = new QSPanel.Callback() {
+ private boolean mScanState;
+
@Override
public void onToggleStateChanged(final boolean state) {
post(new Runnable() {
@@ -693,7 +698,16 @@ public class StatusBarHeaderView extends RelativeLayout implements View.OnClickL
}
private void handleScanStateChanged(boolean state) {
- // TODO - waiting on framework asset
+ if (mScanState == state) return;
+ mScanState = state;
+ final Animatable anim = (Animatable) mQsDetailHeaderProgress.getDrawable();
+ if (state) {
+ mQsDetailHeaderProgress.animate().alpha(1f);
+ anim.start();
+ } else {
+ mQsDetailHeaderProgress.animate().alpha(0f);
+ anim.stop();
+ }
}
private void handleShowingDetail(final QSTile.DetailAdapter detail) {