# switchbutton **Repository Path**: netral/switchbutton ## Basic Information - **Project Name**: switchbutton - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-10-14 - **Last Updated**: 2021-10-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # About Android开关按钮 # Gradle [![](https://jitpack.io/v/zj565061763/switchbutton.svg)](https://jitpack.io/#zj565061763/switchbutton) # 默认效果 ![](http://thumbsnap.com/i/KBISOucv.gif?0705) # 覆盖全局默认效果 支持覆盖的默认配置:
* colors
可以在项目中定义colors覆盖库中的默认配置
```xml #E3E3E3 #D2D2D2 #4AD863 @color/lib_sb_color_checked_view #FFFFFF #D2D2D2 ``` * dimens
可以在项目中定义dimens覆盖库中的默认配置
```xml 50dp 1dp 1px 1px 1px ``` * drawable
可以在项目中定义drawable覆盖库中的默认配置,覆盖drawable后以上的colors和dimens设置失效
![](http://thumbsnap.com/i/vErZPQhN.png?0706)
# xml属性 支持的xml属性配置:
```xml ``` # 监听滚动 ![](http://thumbsnap.com/i/YS9spIQs.gif?0706)
1. xml中布局:
```xml ``` 2. java文件中:
```java sb_rect.setOnViewPositionChangeCallback(new SwitchButton.OnViewPositionChangeCallback() { @Override public void onViewPositionChanged(SwitchButton switchButton) { float percent = switchButton.getScrollPercent() * 0.8f + 0.2f; switchButton.getViewNormal().setScaleY(percent); switchButton.getViewChecked().setScaleY(percent); } }); ``` # 自定义内部的View ```xml ``` # SwitchButton接口 ```java public interface SwitchButton { /** * 是否处于选中状态 * * @return */ boolean isChecked(); /** * 设置选中状态 * * @param checked true-选中,false-未选中 * @param anim 是否需要动画 * @param notifyCallback 是否需要通知回调 * @return true-调用此方法后状态发生了变化 */ boolean setChecked(boolean checked, boolean anim, boolean notifyCallback); /** * 切换选中状态 * * @param anim 是否需要动画 * @param notifyCallback 是否需要通知回调 */ void toggleChecked(boolean anim, boolean notifyCallback); /** * 设置选中变化回调 * * @param callback */ void setOnCheckedChangeCallback(OnCheckedChangeCallback callback); /** * 设置手柄view位置变化回调 * * @param callback */ void setOnViewPositionChangeCallback(OnViewPositionChangeCallback callback); /** * 设置滚动状态变化回调 * * @param callback */ void setOnScrollStateChangeCallback(OnScrollStateChangeCallback callback); /** * 返回滚动的百分比[0-1] * * @return */ float getScrollPercent(); /** * 返回滚动状态 * * @return */ ScrollState getScrollState(); /** * 返回正常状态view * * @return */ View getViewNormal(); /** * 返回选中状态view * * @return */ View getViewChecked(); /** * 返回手柄view * * @return */ View getViewThumb(); interface OnCheckedChangeCallback { /** * 选中状态变化回调 * * @param checked * @param switchButton */ void onCheckedChanged(boolean checked, SwitchButton switchButton); } interface OnViewPositionChangeCallback { /** * 手柄view滚动回调 * * @param switchButton */ void onViewPositionChanged(SwitchButton switchButton); } enum ScrollState { /** * 空闲状态 */ Idle, /** * 拖动状态 */ Drag, /** * 惯性滑动状态 */ Fling } interface OnScrollStateChangeCallback { /** * 滚动状态变化回调 * * @param oldState * @param newState * @param switchButton */ void onScrollStateChanged(ScrollState oldState, ScrollState newState, SwitchButton switchButton); } } ```