铁拳小金刚 2022-06-09 14:17 采纳率: 40%
浏览 23
已结题

android使用计时器的抽奖代码

问题遇到的现象和发生背景

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#FFFFFF"
>
<TextView
    android:id="@+id/text"
    android:layout_width="wrap_content"
    android:layout_height="50dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:text="抽签系统"
    android:textColor="#98520E"
    android:textSize="22sp" />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img1"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司01"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img2"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司02"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img3"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司03"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img4"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司04"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img5"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司05"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img6"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司06"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img7"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司07"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img8"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text8"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司08"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img9"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text9"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司09"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img10"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司10"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img11"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text11"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司11"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img12"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text12"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司12"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img13"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text13"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司13"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img14"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text14"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司14"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img15"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text15"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司15"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
</LinearLayout>
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal">
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img16"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text16"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司16"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img17"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text17"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司17"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img18"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text18"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司18"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img19"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text19"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司19"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/img20"
            android:layout_width="60dp"
            android:layout_height="45dp"
            android:src="@drawable/home" />

        <TextView
            android:id="@+id/text20"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="9dp"
            android:text="公司20"
            android:textColor="#98520E"
            android:textSize="22sp" />
    </LinearLayout>
</LinearLayout>
<TextView
    android:id="@+id/text21"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_marginTop="9dp"
    android:layout_gravity="center"
    android:gravity="center"
    android:text=""
    android:textSize="22sp" />
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:background="#FFFFFF"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/qfbtn"
        android:layout_width="111dp"
        android:layout_height="match_parent"
        android:backgroundTint="#32CD32"
        android:gravity="center"
        android:text="随机抽取" />
</LinearLayout>

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="30dp" />
 </LinearLayout> 

这是activity

public class MainActivity extends Activity {
private TextView tv1;
private TextView tv2;
private TextView tv3;
private TextView tv4;
private TextView tvStart;
private TextView tv5;
private TextView tv6;
private TextView tv7;
private TextView tv8,tv9,tv10,tv11,tv12,tv13,tv14,tv15,tv16,tv17,tv18,tv19,tv20,text,textView;
private TextView tvNotice;
private Button qfbtn;
private List<TextView> views = new LinkedList<>();//所有的视图
private int timeC= 30;//变色时间间隔
private int lightPosition = 0;//当前亮灯位置,从0开始
private int runCount = 10;//需要转多少圈
private int lunckyPosition = 4;//中奖的幸运位置,从0开始
int ii;
private Handler mHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    init();
}

private void init() {
    tv1 = (TextView) findViewById(R.id.text1);
    tv2 = (TextView) findViewById(R.id.text2);
    tv3 = (TextView) findViewById(R.id.text3);
    tv4 = (TextView) findViewById(R.id.text4);
    tv5 = (TextView) findViewById(R.id.text5);
    tv6 = (TextView) findViewById(R.id.text6);
    tv7 = (TextView) findViewById(R.id.text7);
    tv8 = (TextView) findViewById(R.id.text8);
    tv9 = (TextView) findViewById(R.id.text9);
    tv10 = (TextView) findViewById(R.id.text10);
    tv11 = (TextView) findViewById(R.id.text11);
    tv12 = (TextView) findViewById(R.id.text12);
    tv13 = (TextView) findViewById(R.id.text13);
    tv14 = (TextView) findViewById(R.id.text14);
    tv15 = (TextView) findViewById(R.id.text15);
    tv16 = (TextView) findViewById(R.id.text16);
    tv17 = (TextView) findViewById(R.id.text17);
    tv18 = (TextView) findViewById(R.id.text18);
    tv19 = (TextView) findViewById(R.id.text19);
    tv20 = (TextView) findViewById(R.id.text20);
    textView= (TextView) findViewById(R.id.textView);
    tvNotice = (TextView) findViewById(R.id.text21);
    text= (TextView) findViewById(R.id.text);
    qfbtn= findViewById(R.id.qfbtn);
    views.add(tv1);
    views.add(tv2);
    views.add(tv3);
    views.add(tv4);
    views.add(tv5);
    views.add(tv6);
    views.add(tv7);
    views.add(tv8);
    views.add(tv9);
    views.add(tv10);
    views.add(tv11);
    views.add(tv12);
    views.add(tv13);views.add(tv14);views.add(tv15);views.add(tv16);views.add(tv17);
    views.add(tv18);views.add(tv19);views.add(tv20);
    ii= randomNum(0,19);
    try {
        qfbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                qfbtn.setClickable(false);
                qfbtn.setEnabled(false);
                tvNotice.setText("");
                runCount = 8;
                timeC =30;
                views.get(lunckyPosition).setBackgroundColor(Color.TRANSPARENT);
                lunckyPosition = ii;
                new TimeCount(timeC*20,timeC).start();

            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ii=6;
        }
    });
}

/**
 * 生成随机数
 * @param minNum
 * @param maxNum
 * @return
 */
private int randomNum(int minNum,int maxNum) {
    int max = maxNum;
    int min = minNum;
    Random random = new Random();
    return random.nextInt(max)%(max-min+1) + min;
}

class TimeCount extends CountDownTimer{
    public TimeCount(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
        lightPosition = 0;
    }

    @Override
    public void onTick(long millisUntilFinished) {

        Log.i(">>>", "---" + lightPosition);
        //如果是最后一次滚动
        if (runCount > 0) {
            if (lightPosition > 0) {
                views.get(lightPosition - 1).setBackgroundColor(Color.TRANSPARENT);
            }
            if (lightPosition < 20) {
                views.get(lightPosition).setBackgroundColor(Color.RED);
            }

        } else if (runCount == 0) {

            if (lightPosition < lunckyPosition) {
                if (lightPosition > 0) {
                    views.get(lightPosition - 1).setBackgroundColor(Color.TRANSPARENT);
                }
                if (lightPosition < 20) {
                    views.get(lightPosition).setBackgroundColor(Color.RED);
                }
            }
        }
        if (runCount>1&&millisUntilFinished > timeC && millisUntilFinished < 2*timeC) {

            mHandler = new Handler();
            mHandler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    views.get(18).setBackgroundColor(Color.TRANSPARENT);
                    views.get(19).setBackgroundColor(Color.RED);
                }
            }, timeC);// 这里百毫秒
        }
        lightPosition++;
    }
    @Override
    public void onFinish() {
        Log.i(">>>","onFinish=="+runCount);
        //如果不是最后一圈,需要还原最后一块的颜色
        TextView tvLast= views.get(19);
        if (runCount!=0){
            tvLast.setBackgroundColor(Color.TRANSPARENT);
            //最后几转速度变慢
            if (runCount<3) timeC += 50;
            new TimeCount(timeC*20,timeC).start();
            runCount--;
        }
        //如果是最后一圈且计时也已经结束
        if (runCount==0&&lightPosition==20&&lunckyPosition>0){
            qfbtn.setClickable(true);
            qfbtn.setEnabled(true);
            tvNotice.setText("抽签结果是: "+views.get(lunckyPosition-1).getText().toString());
            if (lunckyPosition!=views.size())
                tvLast.setBackgroundColor(Color.TRANSPARENT);

        }
        ii=randomNum(0,19);
    }
}

}
真机调试正常,但蓝叠、UU、夜神等模拟器都有问题,有时程序出结果时卡死,有时最后两个颜色不变回去,

 我新建project时选的android版本是4.0,原来选的api32,结果模拟器上都打不开,换成android4.0可以运行但运行结果总是不对 。我在想是不是计时器的问题,因为系统负载过高导致计时器不准

请帮我看看到底怎么回事

  • 写回答

1条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-06-09 17:25
    关注

    这么多text?
    为什么不用Adapter+List来实现呢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 6月21日
  • 已采纳回答 6月13日
  • 创建了问题 6月9日

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题