您的位置:首页 > 移动开发 > Android开发

Android SwitchButton 开关按钮

2014-11-28 09:27 477 查看
写了一个开关按钮继承ImageButton,开关状态发生改变时切换图片资源(非滑动效果)。可以 需要滑动效果的可以看
xiaanming  android自定义滑动开关控件,适合所有的android系统;共享给大家 方便大家直接加到工程中;

 

运行截图:



 

代码很简单,也不需要我讲解什么了,直接上源码:

 

/**
* 具有开关效果的ImageButton
* @param  IsTurnOn  Boolean         当前状态 true是开,false 是关;
* @param  offSrc    ResourceId      状态为关的 图片资源ID
* @param  onSrc     ResourceId      状态为开的 图片资源ID
* @param  switchListeneer           开关按钮点击监听器
* @Email lx0017@163.com
* @date 2014-11-27
* @author leo
*
*/
public class SwitchButton extends ImageButton {

private boolean isTurnOn=false;          //当前状态 true是开,false 是关;
private int turnOnResource = 0;          //状态为开的 图片资源ID
private int turnOffResource = 0;         //状态为关的 图片资源ID
private OnSwitchListener onSwitchListener; //开关按钮点击监听器

public SwitchButton(Context context) {
this(context,null);
}

public SwitchButton(Context context, AttributeSet attrs) {
this(context, attrs,0);
}

public SwitchButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
//获取属性
TypedArray typedArray = context.obtainStyledAttributes(attrs,
com.leo.switchbutton.R.styleable.SwitchButton, defStyle, 0);
int n = typedArray.getIndexCount();
for (int i = 0; i < n; i++) {
int attr = typedArray.getIndex(i);
switch (attr) {
case R.styleable.SwitchButton_IsTurnOn:
isTurnOn = typedArray.getBoolean(attr, false);
break;
case R.styleable.SwitchButton_offSrc:
turnOffResource = typedArray.getResourceId(attr, 0);
break;
case R.styleable.SwitchButton_onSrc:
turnOnResource = typedArray.getResourceId(attr, 0);
break;

}

}
init();

}

private void init() {
changeRes(isTurnOn);
setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
isTurnOn = !isTurnOn;
changeRes(isTurnOn);
if(null!=onSwitchListener)
onSwitchListener.onSwitch(v, isTurnOn);
}
});
}
/**
* 更具状态 更换图片资源
* @param isTurnOn
*/
private void changeRes(boolean isTurnOn) {

if (isTurnOn) {
setImageResource(turnOnResource);
} else {
setImageResource(turnOffResource);
}
}

public interface OnSwitchListener {
void onSwitch(View v, boolean isTurnOn);
}

public void setTurnOn(boolean isTurnOn) {
this.isTurnOn = isTurnOn;
changeRes(isTurnOn);

}

public void setTurnOnResource(int turnOnResource) {
this.turnOnResource = turnOnResource;
changeRes(isTurnOn);
}

public void setTurnOffResource(int turnOffResource) {
this.turnOffResource = turnOffResource;
changeRes(isTurnOn);
}

public void setOnSwitchListener(OnSwitchListener onSwitchListener) {
this.onSwitchListener = onSwitchListener;
}

}

 

 

源码下载 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息