| package com.google.android.DemoKit; |
| |
| import android.content.res.Resources; |
| import android.graphics.drawable.Drawable; |
| import android.text.SpannableStringBuilder; |
| import android.text.style.RelativeSizeSpan; |
| import android.text.style.SubscriptSpan; |
| import android.view.ViewGroup; |
| import android.widget.CompoundButton; |
| import android.widget.CompoundButton.OnCheckedChangeListener; |
| import android.widget.TextView; |
| import android.widget.ToggleButton; |
| |
| public class RelayController implements OnCheckedChangeListener { |
| private final int mRelayNumber; |
| private final byte mCommandTarget; |
| private DemoKitActivity mActivity; |
| private TextView mLabel; |
| private ToggleButton mButton; |
| private Drawable mOffBackground; |
| private Drawable mOnBackground; |
| |
| public RelayController(DemoKitActivity activity, int relayNumber, |
| Resources res) { |
| mActivity = activity; |
| mRelayNumber = relayNumber; |
| mCommandTarget = (byte) (relayNumber - 1); |
| mOffBackground = res |
| .getDrawable(R.drawable.toggle_button_off_holo_dark); |
| mOnBackground = res.getDrawable(R.drawable.toggle_button_on_holo_dark); |
| } |
| |
| public void attachToView(ViewGroup targetView) { |
| mLabel = (TextView) targetView.getChildAt(0); |
| SpannableStringBuilder ssb = new SpannableStringBuilder("Relay"); |
| ssb.append(String.valueOf(mRelayNumber)); |
| ssb.setSpan(new SubscriptSpan(), 5, 6, 0); |
| ssb.setSpan(new RelativeSizeSpan(0.7f), 5, 6, 0); |
| mLabel.setText(ssb); |
| mButton = (ToggleButton) targetView.getChildAt(1); |
| mButton.setOnCheckedChangeListener(this); |
| } |
| |
| public void onCheckedChanged(CompoundButton arg0, boolean isChecked) { |
| if (isChecked) { |
| mButton.setBackgroundDrawable(mOnBackground); |
| } else { |
| mButton.setBackgroundDrawable(mOffBackground); |
| } |
| if (mActivity != null) { |
| mActivity.sendCommand(DemoKitActivity.RELAY_COMMAND, |
| mCommandTarget, isChecked ? 1 : 0); |
| } |
| } |
| |
| } |