Fix bug #15170508 When I initially load settings, all on/off toggles start in off position then move to on after pane loads

- refactor all the code that was using the Switch to control it thru the SwitchBar
- start the Switch as View.GONE and make it View.VISIBLE when it is set
as "enabled" or "checked" so that you dont see the Switch transition (it shows
only with it final state)

Change-Id: I382076bf3c819c530b5b2c06ca2429dfb2cdc6bf
This commit is contained in:
Fabrice Di Meglio
2014-05-27 16:43:40 -07:00
parent 22807d93a2
commit 1e52db8063
17 changed files with 101 additions and 90 deletions

View File

@@ -84,10 +84,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
// Default is hide
setVisibility(View.GONE);
}
public ToggleSwitch getSwitch() {
return mSwitch;
mSwitch.setVisibility(View.GONE);
}
public void show() {
@@ -125,4 +122,39 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
}
mSwitchChangeListeners.remove(listener);
}
public void setSwitchOnBeforeCheckedChangeListener(
ToggleSwitch.OnBeforeCheckedChangeListener listener) {
mSwitch.setOnBeforeCheckedChangeListener(listener);
}
public void setSwitchChecked(boolean checked) {
setSwitchChecked(checked, false);
}
public void setSwitchChecked(boolean checked, boolean checkBefore) {
if (checkBefore) {
ToggleSwitch.OnBeforeCheckedChangeListener listener =
mSwitch.getOnBeforeCheckedChangeListener();
if (listener != null && listener.onBeforeCheckedChanged(mSwitch, checked)) {
return;
}
}
mSwitch.setCheckedInternal(checked);
if (mSwitch.getVisibility() == View.GONE) {
mSwitch.setVisibility(View.VISIBLE);
}
}
public void setSwitchEnabled(boolean enabled) {
mSwitch.setEnabled(enabled);
if (mSwitch.getVisibility() == View.GONE) {
mSwitch.setVisibility(View.VISIBLE);
}
}
public boolean isSwitchChecked() {
return mSwitch.isChecked();
}
}

View File

@@ -48,6 +48,10 @@ public class ToggleSwitch extends Switch {
mOnBeforeListener = listener;
}
public OnBeforeCheckedChangeListener getOnBeforeCheckedChangeListener() {
return mOnBeforeListener;
}
@Override
public void setChecked(boolean checked) {
if (mOnBeforeListener != null