package edu.stanford.cs.sujogger.util; import edu.stanford.cs.sujogger.R; import android.content.Context; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; public class SegmentedControl extends LinearLayout { private static final int BUTTON_HEIGHT = 34; private Button mLeftButton, mRightButton; private int mSelectedSegmentIndex; private String[] mItems; private SegmentedControlListener mListener; public SegmentedControl(Context context, String[] items, int initIdx, SegmentedControlListener listener) { super(context); mItems = items; mSelectedSegmentIndex = initIdx; mListener = listener; this.setOrientation(HORIZONTAL); final float scale = context.getResources().getDisplayMetrics().density; mLeftButton = new Button(context); mLeftButton.setText(items[0]); if (initIdx == 0) mLeftButton.setBackgroundResource(R.drawable.btn_sc_left_selected); else mLeftButton.setBackgroundResource(R.drawable.btn_sc_left); mLeftButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (mSelectedSegmentIndex != 0) { setSelectedSegmentIndex(0); mListener.onValueChanged(0); } } }); addView(mLeftButton, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, (int)(BUTTON_HEIGHT * scale + 0.5f), 1)); mRightButton = new Button(context); mRightButton.setText(items[1]); if (initIdx == 1) mRightButton.setBackgroundResource(R.drawable.btn_sc_right_selected); else mRightButton.setBackgroundResource(R.drawable.btn_sc_right); mRightButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (mSelectedSegmentIndex != 1) { setSelectedSegmentIndex(1); mListener.onValueChanged(1); } } }); addView(mRightButton, new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, (int)(BUTTON_HEIGHT * scale + 0.5f), 1)); } public int selectedSegmentIndex() { return mSelectedSegmentIndex; } public void setSelectedSegmentIndex(int idx) { if (idx > mItems.length-1) idx = mItems.length-1; if (idx < 0) idx = 0; mSelectedSegmentIndex = idx; switch(mSelectedSegmentIndex) { case 0: mLeftButton.setBackgroundResource(R.drawable.btn_sc_left_selected); mRightButton.setBackgroundResource(R.drawable.btn_sc_right); break; case 1: mLeftButton.setBackgroundResource(R.drawable.btn_sc_left); mRightButton.setBackgroundResource(R.drawable.btn_sc_right_selected); break; } } public static interface SegmentedControlListener { public void onValueChanged(int newValue); } }