Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 360e15bd authored by John Spurlock's avatar John Spurlock
Browse files

QS: Signal tile optimizations.

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

Change-Id: I4ca750f65e1f1d36daeaf39668da4d2dc6f496d5
parent a05e59d1
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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);
    }

+19 −13
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
 No newline at end of file