android卡片抽奖 翻转卡片 轮转抽奖

产品需求,不得不干
android 实现个卡片抽奖 翻转卡片 轮转抽奖
如图:
在这里插入图片描述
刚开始不知道怎么下手,GitHub找了类似的,不多,但还是找到了可以借鉴demo,就拿来抄了抄,总得先写完作业不是,借鉴的demo就不上链接了,写这篇的时候,功能都上了一周多了,借鉴的demo的地址找不到了(手动捂脸🤦‍♂️),这里表示抱歉,如果原作者看到请私信。

不会画图,就文字描述吧
整个可轮转view是个自定义的view,可通过方法,开启转动,重置数据状态,每个小卡片也是自定义的view,有正面图 ,背景图,和边框view,通过接口,可获取正面imageview(同样,可拓展方法获取背景imageview),也可通过方法更改view 状态,选中,翻转和是否需要翻转动画完毕之后,向外回调状态;
整个流程就是:开启转动,全部卡片翻转到背面,开始跑圈,轮转每个卡片view,并设置倒计时 生成个随机数,当倒计时结束,停止转动,随机数就是转动结束后选中的卡片索引,更改这个索引的卡片的状态,完成翻转。

轮转代码:

 public void startGames() {
        isGameRunning = true;
        isTryToStop = false;
        currentSpeed = DEFAULT_SPEED;
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (isGameRunning) {

                    post(new Runnable() {
                        @Override
                        public void run() {
                            int preIndex = currentIndex;
                            currentIndex++;
                            if (currentIndex >= itemViewArr.length) {
                                currentIndex = 0;
                            }

                            itemViewArr[preIndex].setSelect(false);
                            itemViewArr[currentIndex].setSelect(true);

                            if (isTryToStop && currentSpeed == DEFAULT_SPEED && stayIndex == currentIndex) {
                                isGameRunning = false;

                                postDelayed(new Runnable() {
                                    @Override
                                    public void run() {
                                        itemViewArr[currentIndex].setAction(true);
                                        itemViewArr[currentIndex].setBack(false);
                                    }
                                }, 1000);
                            }
                        }
                    });
                    try {
                        Thread.sleep(getInterruptTime());
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章