幸运转盘,可以控制选中指定的奖项。
Switch branches/tags
Nothing to show
Clone or download
Bakumon
Bakumon add demo apk
Latest commit 34ac127 Nov 12, 2016
Permalink
Failed to load latest commit information.
apk add demo apk Nov 12, 2016
app update README Nov 12, 2016
gradle/wrapper init Nov 12, 2016
screenshots update screenshots Nov 12, 2016
.gitignore .gitignore working Nov 12, 2016
README.md add demo apk Nov 12, 2016
build.gradle init Nov 12, 2016
gradle.properties init Nov 12, 2016
gradlew init Nov 12, 2016
gradlew.bat init Nov 12, 2016
settings.gradle init Nov 12, 2016

README.md

LuckPan

幸运转盘,可以控制选中指定的奖项。如下图,选择 ID 为 6 的奖项,在转盘停止后,选中 ID 为 6 的奖项。

demo下载

screenshot

最近项目中用到了转盘抽奖,才知道抽奖原来这么坑,转盘转动只是给用户看看而已。和点击按钮直接显示出抽奖结果的区别就是等、等、等,看着转盘揪心。

需求:

  1. 转盘上奖项的个数以及奖项的值通过调用接口确定
  2. 点击“开始抽奖”按钮,调接口成功后,停在接口返回的指定位置

API:

方法 参数 说明
setPrizeVoList(List<PrizeVo>) PrizeVo 实体集合,PrizeVo 实体包含 ID、title 等属性 (必须)设置奖项集合
setDarkColor(int) 颜色,如 Color.rgb(82, 182, 197) (非必须,有默认)设置转盘上的深色
setShallowColor(int) 颜色,如 Color.rgb(186, 226, 232) (非必须,有默认)设置转盘上的浅色色
setCircleNumRange(int, int) 转动圈数的范围,如 9~15 (非必须,有默认)设置转动圈数的范围
setOneCircleMillisRange(long, long) 每圈平均用时毫秒数的范围,如 400~600 (非必须,有默认)设置平均转动一圈用时的范围
setOnLuckPanAnimatorEndListener(listener) 转盘停止监听器 (非必须)设置转盘停止监听器
start(int) 选中奖项的 ID (必须)转盘开始转动,并停在 ID 值对应的位置上

使用

1.得到奖项数据集合

List<PrizeVo> prizeVoList = new ArrayList<>();
PrizeVo prizeVo;
for (int i = 0; i < 16; i++) {
    prizeVo = new PrizeVo();
    prizeVo.id = i + "";
    prizeVo.rate = i + "";
    prizeVo.title = "×" + i;
    prizeVoList.add(prizeVo);
}

2.转盘设置奖项数据

// 转盘设置奖项集合
mLuckPan.setPrizeVoList(prizeVoList);

3.开始转动

// 转到 ID 为 3 的奖项停止
mLuckPan.start(3);

可选:设置转动停止监听器

mLuckPan.setOnLuckPanAnimatorEndListener(new LuckPan.OnLuckPanAnimatorEndListener() {
    @Override
    public void onLuckPanAnimatorEnd(PrizeVo choicePrizeVo) {
        Toast.makeText(MainActivity.this, "选中的ID:" + choicePrizeVo.id, Toast.LENGTH_SHORT).show();
    }
});