首先设置监听
view.setCallback(callback);
private CircleViewByImage.ActionCallback callback = new CircleViewByImage.ActionCallback() {
@Override
public void forwardMove() {
showAction("Up");
}
@Override
public void backMove() {
showAction("Down");
}
@Override
public void leftMove() {
showAction("Left");
}
@Override
public void rightMove() {
showAction("Right");
}
@Override
public void centerMove() {
showAction("Move a little in center area");
}
@Override
public void centerClick() {
showAction("Click on center area");
}
@Override
public void actionUp() {
showAction("Action up");
}
}
在每个回调的方法里需要做一个处理,因为每个回调方法在短时间内会因手指头微动而触发多次,所以只需要根据时间(下面是1000ms)来做简单的判断即可
long lastTime;
private void showAction(String str){
long curTime = System.currentTimeMillis();
if (curTime > 1000 + lastTime) {
// TODO: 2017/4/10 your action code
lastTime = curTime;
}
}
缺点
该控件是在UI线程执行的,不是通过SurfaceView绘制的。
demo地址
网友评论