Android自帶的Switch控件其實挺好看的,但因各版本系統顯示效果不太相同,而且就國內UI視覺審美環境來說,該控件很難受寵,往往需要自行定義Switch View以滿足項目的需求。由於該控件實現比較簡單,本文只作開源庫的分享和介紹,希望能給大家帶來幫助。
CySwitch開源庫地址:https://github.com/ausboyue/CySwitch
效果演示
在項目中使用
- Layout XMl 佈局中代碼示例:
<cn.icheny.view.CySwitch
android:id="@+id/cy_switch"
android:layout_width="120dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="25dp"
app:borderColorChecked="@android:color/holo_green_dark"
app:borderColorUnchecked="@android:color/holo_blue_light"
app:borderWidth="0dp"
app:isChecked="true"
app:sliderHeight="40dp"
app:sliderRadius="0dp"
app:sliderWidth="40dp"
app:viewRadius="0dp" />
- java代碼示例:
CySwitch cy_switch = findViewById(R.id.cy_switch);
cy_switch.setViewRadius(radius);
cy_switch.setSliderRadius(radius);
cy_switch.setBorderWidth(width);
cy_switch.checkable(true);
cy_switch.setOnCheckedChangeListener(new CySwitch.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CySwitch switchView, boolean isChecked) {
Toast.makeText(MainActivity.this, "Switch " + isChecked, Toast.LENGTH_SHORT).show();
}
});
屬性介紹
屬性 | 描述 |
---|---|
isChecked | 是否爲Checked狀態 |
switchable | 是否可以切換 |
duration | 動畫時間間隔 |
viewRadius | 控件圓角 |
borderWidth | 邊框寬度 |
borderColorChecked | 邊框顏色 Checked |
borderColorUnchecked | 邊框顏色 Unchecked |
bgColorChecked | 背景顏色 Checked |
bgColorUnchecked | 背景顏色 Unchecked |
sliderColorChecked | 滑塊顏色 Checked |
sliderColorUnchecked | 滑塊顏色 Unchecked |
sliderRadius | 滑塊圓角 |
sliderWidth | 滑塊寬 |
sliderHeight | 滑塊高 |
後期會添加切換時的顏色過渡,shadow陰影以及點擊水波紋效果,敬請期待。