实验五 使用线程设计秒表(时间不精确)

实验五 使用线程

实验目的

熟悉和掌握Android线程的使用

实验要求

  1. 完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新
  2. 分析秒表的计时是否准确,原因是什么,如何保证秒表计时准确

在这里插入图片描述

工程代码

项目工程结构图
在这里插入图片描述

MainActivity:

package com.example.wyx.exp_5;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    private boolean isstop = true;
    private boolean isstart = false;
    private int second=0;
    TextView hour;
    TextView minute;
    TextView miao;
    Button start;
    Button stop;
    Button qingling;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();

    }

    public Handler mHandler = new Handler(){
        public void handleMessage(Message msg)
        {
            switch(msg.arg1) {
                case 1: {
                    second++;//秒数增加
                    if(second<6000)
                    {
                        if(second<100)
                            miao.setText(Integer.toString(second));
                        else{
                            miao.setText(Integer.toString(second%100));
                            minute.setText(Integer.toString(second/100));
                        }
                        //数字转换字符串

                    }
                    else
                    {
                        hour.setText(Integer.toString(second/6000));
                        minute.setText(Integer.toString((second%6000)/100));
                        miao.setText(Integer.toString((second%6000)%100));
                    }
                }
                break;
                case 0:break;
                case 2:hour.setText("00");
                    minute.setText("00");
                    miao.setText("00");
                    break;
            }
        }};

    private class mThread extends Thread {
        @Override
        //线程启动时执行这个函数
        public void run() {

            //一直循环,直到标志位为“真”
            while (!isstop) {
                {
                    try {
                        //延时1ms
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    Message msg = new Message();
                    //消息标志
                    msg.arg1 = 1;
                    //发送这个消息
                    mHandler.sendMessage(msg);
                }
            }
        }
    }


        public void init(){

            hour=(TextView)findViewById(R.id.textView2);
            minute=(TextView)findViewById(R.id.textView4);
            miao=(TextView)findViewById(R.id.textView6);
            qingling=(Button)findViewById(R.id.button4);
            start=(Button)findViewById(R.id.button5);
            stop=(Button)findViewById(R.id.button6);
            final mThread thread=new mThread();

            qingling.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                isstop=true;
                second=0;
                Message msg2 = new Message();
                //消息标志
                msg2.arg1 = 2;
                mHandler.sendMessage(msg2);
               /* hour.setText("00");
                minute.setText("00");
                miao.setText("00");*/

            }
        });

        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              isstop = false;
                if(!isstart)
                {
                    thread.start();
                    isstart=true;
                }
                else{
                    mThread thread2=new mThread();
                    thread2.start();
                }
                /*isstop = false;
                thread.start();*/

            }
        });
            stop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    isstop = true;

                }
            });
    }


}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="25dp"
            android:text="秒表"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView3"
            android:layout_alignBottom="@+id/textView3"
            android:layout_toStartOf="@+id/textView3"
            android:text="00"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textView"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="14dp"
            android:text="00"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView5"
            android:layout_alignBottom="@+id/textView5"
            android:layout_toEndOf="@+id/textView5"
            android:text="00"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView4"
            android:layout_alignBottom="@+id/textView4"
            android:layout_toStartOf="@+id/textView4"
            android:text=":"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/textView5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/textView4"
            android:layout_alignBottom="@+id/textView4"
            android:layout_toEndOf="@+id/textView4"
            android:text=":"
            android:textColor="#000000"
            android:textSize="30dp"
            android:textStyle="bold" />

        <LinearLayout
            android:layout_width="230dp"
            android:layout_height="60dp"
            android:layout_below="@+id/textView2"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="17dp"
            android:orientation="horizontal">

            <Button
                android:id="@+id/button4"
                android:layout_width="70dp"
                android:layout_height="wrap_content"
                android:text="清零"
                android:textSize="20dp"/>

            <Button
                android:id="@+id/button5"
                android:layout_width="70dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="计时"
                android:textSize="20dp"/>

            <Button
                android:id="@+id/button6"
                android:layout_width="70dp"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:text="停止"
                android:textSize="20dp"/>

        </LinearLayout>


    </RelativeLayout>
</LinearLayout>

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.wyx.exp_5">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

实现效果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39699765/article/details/84311846