SwitchButton 的使用汇总 —— 定制漂亮的开关控件

时间:2022-01-16 19:16:37

SwitchButton 是一个开源 switch开关控件;在android studio build.gradel引入插件即可

SwitchButton 的使用汇总 —— 定制漂亮的开关控件


在xml中布局的每个属性的意义如下:

kswThumbWidth:设置开关按钮的宽
kswThumbHeight:设置开关按钮的高
kswThumbMargin:设置开关与背景之间的编辑
kswThumbMarginLeft 、kswThumbMarginRight、kswThumbMarginButtom、kswThumbMarginTop 略
kswThumbRadius:设置开关按钮的圆角半径
kswThumbDrawable:用一张图片作为开关按钮 (设置了按钮无切换效果)
kswThumbColor:设置开关按钮的颜色 (设置了按钮无切换效果)

kswBackRadius:设置开关背景的圆角半径
kswBackColor:设置开关 背景颜色(设置了 无开关效果)ps:没设置的话就没有为透明

kswFadeBack:是否开起切换的渐变效果
kswBackMeasureRatio:设置开关背景的长度(可滑动区间的长度),他是比率,比率越大,越长
kswTintColor:设置开关 打开后 背景及按钮的颜色 
ps:如果只设置了kswBackColor而没设置kswTintColor开关的切换只有按钮有切换效果,背景没有

kswAnimationDuration:开关动画的持续时间

kswTextOn:打开状态的文字
kswTextOff:关闭状态的文字
kswTextMarginH:打开或关闭文字 距离相应一边的距离(eg:打开状态的文字距离)

SwitchButton 的使用汇总 —— 定制漂亮的开关控件

android:checked="true" 置为打开状态 //可以看出  switchBotton实现了android Checkable接口


在代码中控件设置打开或关闭状态以及回调监听如下:

setChecked()切换有动画效果
setCheckedImmediately() 作用与setChecked()一致但是无动画效果

toggle()与toggleImmediately() 是切换当前状态(比如 当前打开,调用此方法则变为关闭状态)两者存在有无动画效果区分

切换的回调监听
setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            }
        }); 


1.4.1版本后存在切换后 无事件处理
etCheckedNoEvent(boolean)
setCheckedImmediatelyNoEvent(boolean)
toggleNoEvent()

toggleImmediatelyNoEvent()


进一步了解可以一起探讨下源码,这是文档地址:https://github.com/kyleduo/SwitchButton