SignalTileViewpublic final class SignalTileView extends QSTileView View that represents a custom quick settings tile for displaying signal info (wifi/cell). |
Fields Summary |
---|
private static final long | DEFAULT_DURATION | private static final long | SHORT_DURATION | private android.widget.FrameLayout | mIconFrame | private android.widget.ImageView | mSignal | private android.widget.ImageView | mOverlay | private android.widget.ImageView | mIn | private android.widget.ImageView | mOut | private int | mWideOverlayIconStartPadding |
Constructors Summary |
---|
public SignalTileView(android.content.Context context)
super(context);
mIn = addTrafficView(R.drawable.ic_qs_signal_in);
mOut = addTrafficView(R.drawable.ic_qs_signal_out);
mWideOverlayIconStartPadding = context.getResources().getDimensionPixelSize(
R.dimen.wide_type_icon_start_padding_qs);
|
Methods Summary |
---|
private android.widget.ImageView | addTrafficView(int icon)
final ImageView traffic = new ImageView(mContext);
traffic.setImageResource(icon);
traffic.setAlpha(0f);
addView(traffic);
return traffic;
| protected android.view.View | createIcon()
mIconFrame = new FrameLayout(mContext);
mSignal = new ImageView(mContext);
mIconFrame.addView(mSignal);
mOverlay = new ImageView(mContext);
mIconFrame.addView(mOverlay, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
return mIconFrame;
| protected void | handleStateChanged(QSTile.State state)
super.handleStateChanged(state);
final SignalState s = (SignalState) state;
setIcon(mSignal, s);
if (s.overlayIconId > 0) {
mOverlay.setVisibility(VISIBLE);
mOverlay.setImageResource(s.overlayIconId);
} else {
mOverlay.setVisibility(GONE);
}
if (s.overlayIconId > 0 && s.isOverlayIconWide) {
mSignal.setPaddingRelative(mWideOverlayIconStartPadding, 0, 0, 0);
} else {
mSignal.setPaddingRelative(0, 0, 0, 0);
}
Drawable drawable = mSignal.getDrawable();
if (state.autoMirrorDrawable && drawable != null) {
drawable.setAutoMirrored(true);
}
final boolean shown = isShown();
setVisibility(mIn, shown, s.activityIn);
setVisibility(mOut, shown, s.activityOut);
| private void | layoutIndicator(android.view.View indicator)
boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL;
int left, right;
if (isRtl) {
right = mIconFrame.getLeft();
left = right - indicator.getMeasuredWidth();
} else {
left = mIconFrame.getRight();
right = left + indicator.getMeasuredWidth();
}
indicator.layout(
left,
mIconFrame.getBottom() - indicator.getMeasuredHeight(),
right,
mIconFrame.getBottom());
| protected void | onLayout(boolean changed, int l, int t, int r, int b)
super.onLayout(changed, l, t, r, b);
layoutIndicator(mIn);
layoutIndicator(mOut);
| protected void | onMeasure(int widthMeasureSpec, int heightMeasureSpec)
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int hs = MeasureSpec.makeMeasureSpec(mIconFrame.getMeasuredHeight(), MeasureSpec.EXACTLY);
int ws = MeasureSpec.makeMeasureSpec(mIconFrame.getMeasuredHeight(), MeasureSpec.AT_MOST);
mIn.measure(ws, hs);
mOut.measure(ws, hs);
| private void | setVisibility(android.view.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)
.start();
} else {
view.setAlpha(newAlpha);
}
|
|