超简单九宫格抽奖Android效果

先上个效果图。(动图降帧后显示有点问题,不要在意)
在这里插入图片描述

在上代码:
第一步:布局



布局啥的无所谓就是写了个九宫格,围着一圈记录8个view

@BindView(R.id.choujiang_wu1_img)
ImageView wu1Img;
@BindView(R.id.choujiang_zhe1_img)
ImageView zhe1Img;

@BindView(R.id.choujiang_wu2_img)
ImageView wu2Img;
@BindView(R.id.choujiang_zhe2_img)
ImageView zhe2Img;@BindView(R.id.choujiang_wu3_img)
ImageView wu3Img;
@BindView(R.id.choujiang_zhe3_img)
ImageView zhe3Img;@BindView(R.id.choujiang_wu4_img)
ImageView wu4Img;
@BindView(R.id.choujiang_zhe4_img)
ImageView zhe4Img;@BindView(R.id.choujiang_wu5_img)
ImageView wu5Img;
@BindView(R.id.choujiang_zhe5_img)
ImageView zhe5Img;@BindView(R.id.choujiang_wu6_img)
ImageView wu6Img;
@BindView(R.id.choujiang_zhe6_img)
ImageView zhe6Img;@BindView(R.id.choujiang_wu7_img)
ImageView wu7Img;
@BindView(R.id.choujiang_zhe7_img)
ImageView zhe7Img;@BindView(R.id.choujiang_wu8_img)
ImageView wu8Img;
@BindView(R.id.choujiang_zhe8_img)
ImageView zhe8Img;@BindView(R.id.choujiang_bt_rel)
RelativeLayout cjBtRel;
@BindView(R.id.choujiang_bt_img)
ImageView cjBtImg;
List zheViewList = new ArrayList<>();
List wuViewList = new ArrayList<>();
List list = new ArrayList<>();
@BindView(R.id.choujiang_number)
EditText numEt;

声明。

二 两个view集合填满----------------------------------
private void setView() {
zheViewList.add(zhe1Img);//奖品遮罩层
zheViewList.add(zhe2Img);
zheViewList.add(zhe3Img);
zheViewList.add(zhe4Img);
zheViewList.add(zhe5Img);
zheViewList.add(zhe6Img);
zheViewList.add(zhe7Img);
zheViewList.add(zhe8Img);
wuViewList.add(wu1Img);//奖品底图
wuViewList.add(wu2Img);
wuViewList.add(wu3Img);
wuViewList.add(wu4Img);
wuViewList.add(wu5Img);
wuViewList.add(wu6Img);
wuViewList.add(wu7Img);
wuViewList.add(wu8Img);
}
三/------------------------------------------------------------------------
//模拟添加一个抽奖集合,8个商品
for (int i = 0; i < 8; i++) {
ChouJiangEntity.DataBean2 dataBean2 = new ChouJiangEntity.DataBean2();
dataBean2.setId(i);
dataBean2.setName(“奖品” + i);
list.add(dataBean2);
}
//点击开始抽奖
cjBtRel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String num = numEt.getText().toString();
if (TextUtil.isEmpty(num)) {
return;
}
int id = Integer.parseInt(num);
if (id < 0 || id > 7) {
return;
}
cjBtRel.setClickable(false);//抽奖时禁用点击
setWuID(id);//这里传入你中奖id(ps:抽奖都是骗人的)
}
});
//根据中奖id计算所需要跑的个数
private void setWuID(int id) {
int didIndex = 0;
for (int j = 0; j < list.size(); j++) {
if (id == list.get(j).getId()) {
didIndex = j;
}
}
stopIndex = didIndex + 16;//一圈八个,默认加两圈
zheViewList.get(0).setVisibility(View.VISIBLE);//先打开第一个遮罩层
startCJ(); //开始跑动效
}

四/最后结束了的步骤--------------------------------------

Handler handler = new Handler();
Runnable runnable;
int index = 0;
int sudu = 100;
int stopIndex = 0;
///跑一个计时器,默认100毫秒跳转
private void startCJ() {
if (stopIndex < 16) {//如果不足两圈肯定是错的,不判断也行
Toast.makeText(ChouJiangActivity.this, “抽奖信息出错~”, Toast.LENGTH_SHORT).show();
return;
}
//到第八个,第二圈开始减速
if (index > 6) {
float jiansu = 900f / stopIndex - 7;
sudu = sudu + (int) jiansu;
}
handler.postDelayed(runnable = new Runnable() {
@Override
public void run() {
if (index < stopIndex) {
index++;
showView(index);
startCJ();
} else {
showView(index);
handler.removeCallbacks(runnable);
index = 0;
stopIndex = 0;
sudu = 100;
}

        }}, sudu);
}private void showView(int in) {for (int i = 0; i < zheViewList.size(); i++) {zheViewList.get(i).setVisibility(View.GONE);}if (in < stopIndex) {zheViewList.get(in % 8).setVisibility(View.VISIBLE);} else {zheViewList.get(in % 8).setVisibility(View.VISIBLE);new Handler().postDelayed(new Runnable() {@Overridepublic void run() {zheViewList.get(in % 8).setVisibility(View.GONE);Toast.makeText(ChouJiangActivity.this, "抽中" + list.get(in % 8).getName(), Toast.LENGTH_SHORT).show();cjBtRel.setClickable(true);}}, 800);//最后抽中的这个停留800毫秒消失并弹出中奖信息}
}

好了,结束:不懂的加V:ryh5342242


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部