~转载请注明来源:http://blog.youkuaiyun.com/u013015161/article/details/46704745
介绍
昨天晚上写了一个Android的滑动开关, 即SlideSwitch。效果如下:
实现
实现的思路其实很简单,监听控件上的touch事件,并不断刷新,让滑块在手指的位置上绘出,达到滑块跟着手指滑动的显示效果。
先看一下代码:
SlideSwitch.java (7月3日有修改:在touch事件里调用onStateChangedListener前增加判空)
package com.incell.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class SlideSwitch extends View{
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); //抗锯齿
boolean isOn = false;
float curX = 0;
float centerY; //y固定
float viewWidth;
float radius;
float lineStart; //直线段开始的位置(横坐标,即
float lineEnd; //直线段结束的位置(纵坐标
float lineWidth;
final int SCALE = 4; // 控件长度为滑动的圆的半径的倍数
OnStateChangedListener onStateChangedListener;
public SlideSwitch(Context