# 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/#zj565061763/switchbutton)
# 默认效果

# 覆盖全局默认效果
支持覆盖的默认配置:
* 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设置失效

# xml属性
支持的xml属性配置:
```xml
```
# 监听滚动

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);
}
}
```