QS: Signal tile optimizations.

- Only set visibility if changed (all tiles)
- Only animate traffic indicators if showing panel

Change-Id: I4ca750f65e1f1d36daeaf39668da4d2dc6f496d5
This commit is contained in:
John Spurlock
2014-07-08 18:45:21 -04:00
parent a05e59d12b
commit 360e15bdd2
2 changed files with 20 additions and 13 deletions

View File

@@ -126,6 +126,7 @@ public class QSPanel extends ViewGroup {
}
private void handleSetTileVisibility(View v, boolean visible) {
if (visible == (v.getVisibility() == VISIBLE)) return;
v.setVisibility(visible ? VISIBLE : GONE);
}

View File

@@ -42,15 +42,17 @@ public final class SignalTileView extends QSTileView {
public SignalTileView(Context context) {
super(context);
mIn = new ImageView(context);
mIn.setImageResource(R.drawable.ic_qs_signal_in);
mIn.setColorFilter(FILTER);
addView(mIn);
mIn = addTrafficView(R.drawable.ic_qs_signal_in);
mOut = addTrafficView(R.drawable.ic_qs_signal_out);
}
mOut = new ImageView(context);
mOut.setImageResource(R.drawable.ic_qs_signal_out);
mOut.setColorFilter(FILTER);
addView(mOut);
private ImageView addTrafficView(int icon) {
final ImageView traffic = new ImageView(mContext);
traffic.setImageResource(icon);
traffic.setColorFilter(FILTER);
traffic.setAlpha(0f);
addView(traffic);
return traffic;
}
@Override
@@ -102,18 +104,22 @@ public final class SignalTileView extends QSTileView {
} else {
mOverlay.setVisibility(GONE);
}
setVisibility(mIn, s.activityIn);
setVisibility(mOut, s.activityOut);
final boolean shown = isShown();
setVisibility(mIn, shown, s.activityIn);
setVisibility(mOut, shown, s.activityOut);
}
private void setVisibility(View view, boolean visible) {
final float newAlpha = visible ? 1 : 0;
if (view.getAlpha() != newAlpha) {
private void setVisibility(View view, boolean shown, boolean visible) {
final float newAlpha = shown && visible ? 1 : 0;
if (view.getAlpha() == newAlpha) return;
if (shown) {
view.animate()
.setDuration(visible ? SHORT_DURATION : DEFAULT_DURATION)
.alpha(newAlpha)
.withLayer()
.start();
} else {
view.setAlpha(newAlpha);
}
}
}