Android -小强-本人竭力打造的第一个开源项目 欢迎star 请勿商用 维护中 欢迎star 有bug 请提交lssues
此控件是一个 抽奖转盘 因项目中用到 开源出来 供大家娱乐 嘿嘿
本库 还包含自己写的很多 自定义view loading 等 感兴趣 可以试试玩一玩 有兴趣交流的话加我QQ 980766134
当前最新版本号为 1.0.6
用法: 1 添加仓库
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
2 添加依赖
dependencies {
//CODE 修改为最新版本号 即可
implementation 'com.github.githubwangjunqiang:LotteryTurntable:vCODE'
}
3 布局中使用
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.xiaoqiang.lottery.lottery.luckView
android:id="@+id/luckview"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_gravity="center"
app:lv_bordercolor="@color/colorAccent"
app:lv_isUnColor="true"
app:lv_isUnSize="true"
app:lv_luckDataColor="@color/colorAccent"
app:lv_rotationSpeed="50"
app:lv_viewbackcolor="@color/colorAccent"/>
<!--中间指针 图片自己随意-->
<ImageView
android:onClick="doClicl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@mipmap/ic_launcher" />
</FrameLayout>
4 属性作用
app:lv_bordercolor -》是指外边框颜色 默认外边框宽度是getPaddingLeft() 如果没有设置 会有默认的宽度 如果不想有边框设置白色即可
app:lv_isUnColor="true" -》中奖结果 是否高亮显示
app:lv_isUnSize="true" -》中奖结果 是否大小突出改变
app:lv_luckDataColor -》中奖结果 可以高亮显示的话 设置高亮的颜色
app:lv_rotationSpeed="50" -》 设置旋转的速度
app:lv_viewbackcolor -> 设置背景颜色
5 代码示例
第一步 初始化
//初始化 转盘
IluckView view = findViewById(R.id.luckview);
//给转盘填充奖品模块 实体类 LuckData
for (int i = 0; i < 6; i++) {
//创建奖品实体类 本库依赖此实体类
LuckData data = new LuckData();
//设置奖品背景色
data.setBackColor(R.color.colorAccent);
//设置奖品图片 可以不用填
data.setBitmap(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher));
//设置图片显示的宽度 百分比 例如控件半径的5分之一
data.setBitmepWidth(5);
//设置奖品名字
data.setName("我是奖品");
//设置奖品文字颜色
data.setTextColor(R.color.colorAccent);
//设置奖品文字大小 单位px
data.setTextSize(12);
//设置奖品唯一id 用来制定奖品位置
data.setId(4);
//填入奖品
view.addLuckData(data);
}
第二步 开始旋转
// 让转盘转起来
view.startLuck();
第三步 设置停止旋转 并指定奖品结果
//设置停止 传入奖品结果 参数是您指定的奖品 就是您传入的奖品任意一个
view.stopLuck(mLuckData.get(0));
//也可以重载 添加回调
view.stopLuck(data, new ICallback() {
@Override
public void luckStart(double mSpeed) {
//TODO 旋转开始
}
@Override
public void luckEnd(LuckData data) {
//TODO 旋转结束 可以提示 用户得将了 实体类-》data
}
});
/**
* 也可以单独添加回调
*/
view.setLuckCallback(new ICallback() {
@Override
public void luckStart(double mSpeed) {
//TODO 旋转开始
}
@Override
public void luckEnd(LuckData data) {
//TODO 旋转结束 可以提示 用户得将了 实体类-》data
}
});
6 各种配置
//可动态配置各参数
view.setBorderColor(R.color.colorAccent);
view.setLuckDataColor(R.color.colorAccent);
view.setLuckisUnColor(true);
view.setLuckisUnSize(true);
view.setViewBackColor(int color);
就是这么简单 完成了 抽奖转盘 有什么问题可以提交 我会及时修改bug
注意事项
本库使用SurfaceView 来实现转盘绘制 如有其他冲突 请您酌情考虑
本库的默认中奖位置设置在中心位置正上方 未来可能会扩展出 设置位置 您在设置图片时 指针方向设置在中心上方就可以了
添加了 loadingView
历程
1.0.6:修复转盘停止回调 重复调用的问题
1.0.5:添加转盘停止回调