package hillfly.wifichat.common.view; import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import hillfly.wifichat.R; public class SwitcherButton extends LinearLayout { private View mView; private RelativeLayout mLayoutRoot; private LinearLayout mLayoutTab; private ImageView mIvLeftImage; private TextView mTvLeftText; private ImageView mIvRightImage; private TextView mTvRightText; private LayoutInflater mInflater; private onSwitcherButtonClickListener mSwitcherButtonClickListener; private SwitcherButtonState mState; public SwitcherButton(Context context) { super(context); init(context); } public SwitcherButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } public SwitcherButton(Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context) { mInflater = LayoutInflater.from(context); mView = mInflater.inflate(R.layout.common_switcher, null); addView(mView); initViews(); initEvents(); mState = SwitcherButtonState.LEFT; mTvLeftText.setSelected(true); } public View findViewBySwitcherId(int id) { return mView.findViewById(id); } private void initViews() { mLayoutRoot = (RelativeLayout) findViewBySwitcherId(R.id.switcher_layout_root); mLayoutTab = (LinearLayout) findViewBySwitcherId(R.id.switcher_layout_tab); mIvLeftImage = (ImageView) findViewBySwitcherId(R.id.switcher_iv_left_image); mIvRightImage = (ImageView) findViewBySwitcherId(R.id.switcher_iv_right_image); mTvLeftText = (TextView) findViewBySwitcherId(R.id.switcher_tv_left_text); mTvRightText = (TextView) findViewBySwitcherId(R.id.switcher_tv_right_text); } private void initEvents() { mLayoutRoot.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mSwitcherButtonClickListener != null) { switch (mState) { case LEFT: mState = SwitcherButtonState.RIGHT; mLayoutTab.setGravity(Gravity.RIGHT); mTvLeftText.setSelected(false); mTvRightText.setSelected(true); mSwitcherButtonClickListener.onClick(mState); break; case RIGHT: mState = SwitcherButtonState.LEFT; mLayoutTab.setGravity(Gravity.LEFT); mTvLeftText.setSelected(true); mTvRightText.setSelected(false); mSwitcherButtonClickListener.onClick(mState); break; } } } }); } public void setLeftText(CharSequence text) { if (text != null) { mTvLeftText.setText(text); } } public void setRightText(CharSequence text) { if (text != null) { mTvRightText.setText(text); } } public void setLeftImage(int id) { if (id > 0) { mIvLeftImage.setImageResource(id); } } public void setRightImage(int id) { if (id > 0) { mIvRightImage.setImageResource(id); } } public void setOnSwitcherButtonClickListener( onSwitcherButtonClickListener listener) { mSwitcherButtonClickListener = listener; } public interface onSwitcherButtonClickListener { void onClick(SwitcherButtonState state); } public enum SwitcherButtonState { LEFT, RIGHT; } }