android 高仿ios开关,Android 仿苹果IOS6开关按钮

本文介绍了如何在Android中创建一个高仿iOS风格的开关按钮,包括详细代码实现和效果展示,支持自定义颜色和动画效果。通过设置不同的属性,可以定制开关的外观,并提供了回调接口监听开关状态变化。
摘要由CSDN通过智能技术生成

先给大家展示下效果图:

477e94d455ecb1a2ed00b4408a98b9b8.gif

不知道大家对效果图感觉怎么样,个人觉还不错,感兴趣的朋友可以参考下实现代码哦。

public class ToggleButton extends View {

private SpringSystem springSystem;

private Spring spring ;

/** */

private float radius;

/** 开启颜色*/

private int onColor = Color.parseColor("#4ebb7f");

/** 关闭颜色*/

private int offBorderColor = Color.parseColor("#dadbda");

/** 灰色带颜色*/

private int offColor = Color.parseColor("#ffffff");

/** 手柄颜色*/

private int spotColor = Color.parseColor("#ffffff");

/** 边框颜色*/

private int borderColor = offBorderColor;

/** 画笔*/

private Paint paint ;

/** 开关状态*/

private boolean toggleOn = false;

/** 边框大小*/

private int borderWidth = 2;

/** 垂直中心*/

private float centerY;

/** 按钮的开始和结束位置*/

private float startX, endX;

/** 手柄X位置的最小和最大值*/

private float spotMinX, spotMaxX;

/**手柄大小 */

private int spotSize ;

/** 手柄X位置*/

private float spotX;

/** 关闭时内部灰色带高度*/

private float offLineWidth;

/** */

private RectF rect = new RectF();

/** 默认使用动画*/

private boolean defaultAnimate = true;

/** 是否默认处于打开状态*/

private boolean isDefaultOn = false;

private OnToggleChanged listener;

private ToggleButton(Context context) {

super(context);

}

public ToggleButton(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

setup(attrs);

}

public ToggleButton(Context context, AttributeSet attrs) {

super(context, attrs);

setup(attrs);

}

@Override

protected void onDetachedFromWindow() {

super.onDetachedFromWindow();

spring.removeListener(springListener);

}

public void onAttachedToWindow() {

super.onAttachedToWindow();

spring.addListener(springListener);

}

public void setup(AttributeSet attrs) {

paint = new Paint(Paint.ANTI_ALIAS_FLAG);

paint.setStyle(Style.FILL);

paint.setStrokeCap(Cap.R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值