Android自定义摇杆


转载请说明出处!
作者:kqw攻城狮
出处:个人站 | CSDN


效果图

效果图

效果图

源码

KqwRockerDemo

喜欢就给个star,谢谢!

功能

  • 支持自适应大小
  • 支持2个方向、4个方向、8个方向的摇动监听
  • 支持摇动角度获取
  • 可选回调模式
  • 支持可摇动区域自定义
  • 支持摇杆自定义
  • 支持设置图片、色值、Shape图形

使用

1
2
3
4
5
6
7
8
<kong.qingwei.rockerlibrary.RockerView
android:id="@+id/rockerView_center"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
kongqw:areaBackground="#FF333333"
kongqw:rockerBackground="#FF987654"
kongqw:rockerRadius="15dp" />

参数

参数 是否必须 描述
areaBackground 可选 可摇动区域的背景
rockerBackground 可选 摇杆的背景
rockerRadius 可选 摇杆半径

设置回调方式

1
setCallBackMode(CallBackMode mode)

参数

回调方式 描述
CALL_BACK_MODE_MOVE 有移动就立刻回调
CALL_BACK_MODE_STATE_CHANGE 状态有变化的时候回调

监听摇动角度

返回角度的取值范围:[0°,360°)

取值范围

1
setOnAngleChangeListener(OnAngleChangeListener listener)

监听摇动方向

1
setOnShakeListener(DirectionMode directionMode, OnShakeListener listener)

支持监听的方向

方向 描述
DIRECTION_2_HORIZONTAL 左右两个方向 横向 左右两个方向
DIRECTION_2_VERTICAL 上下两个方向 纵向 上下两个方向
DIRECTION_4_ROTATE_0 四个方向 四个方向
DIRECTION_4_ROTATE_45 四个方向 旋转45° 四个方向 旋转45°
DIRECTION_8 八个方向 八个方向

方向描述

方向 描述
DIRECTION_LEFT
DIRECTION_RIGHT
DIRECTION_UP
DIRECTION_DOWN
DIRECTION_UP_LEFT 左上
DIRECTION_UP_RIGHT 右上
DIRECTION_DOWN_LEFT 左下
DIRECTION_DOWN_RIGHT 右下
DIRECTION_CENTER 中间

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
RockerView rockerViewLeft = (RockerView) findViewById(R.id.rockerView_left);
if (rockerViewLeft != null) {
rockerViewLeft.setCallBackMode(RockerView.CallBackMode.CALL_BACK_MODE_STATE_CHANGE);
rockerViewLeft.setOnShakeListener(RockerView.DirectionMode.DIRECTION_8, new RockerView.OnShakeListener() {
@Override
public void onStart() {
mLogLeft.setText(null);
}
@Override
public void direction(RockerView.Direction direction) {
mLogLeft.setText("摇动方向 : " + getDirection(direction));
}
@Override
public void onFinish() {
mLogLeft.setText(null);
}
});
}
RockerView rockerViewRight = (RockerView) findViewById(R.id.rockerView_right);
if (rockerViewRight != null) {
rockerViewRight.setOnAngleChangeListener(new RockerView.OnAngleChangeListener() {
@Override
public void onStart() {
mLogRight.setText(null);
}
@Override
public void angle(double angle) {
mLogRight.setText("摇动角度 : " + angle);
}
@Override
public void onFinish() {
mLogRight.setText(null);
}
});
}
坚持原创技术分享,您的支持将鼓励我继续创作!