如何通过单击按钮来启动/停止计时器,从而在Java中制作一个简单的计时器? [英] How do i make a simple timer in java with a button click to start/stop the timer?

查看:92
本文介绍了如何通过单击按钮来启动/停止计时器,从而在Java中制作一个简单的计时器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Android Studio中,我在onActivity的onCreate中做到了:

In android studio in the MainActivity in the onCreate i did:

timerValueRecord = (TextView) findViewById(R.id.timerValueRecord);

在strings.xml中,我添加了:

In strings.xml i added:

<string name="timerValRecord">Recording Time: 00:00:00</string>

在activity_main.xml中,我添加了:

In activity_main.xml i added:

<TextView
        android:id="@+id/timerValueRecord"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="20sp"
        android:textColor="#000000"
        android:layout_marginTop="315dp"
        android:text="@string/timerValRecord" />

在activity_main设计器中,它看起来像:

In the activity_main designer it looks like:

在MainActivity中,我有一个触摸事件:

In the MainActivity i have a touch event:

@Override
        public boolean onTouchEvent(MotionEvent event)
        {
            float eventX = event.getX();
            float eventY = event.getY();

            float lastdownx = 0;
            float lastdowny = 0;

            switch (event.getAction())
            {
                case MotionEvent.ACTION_DOWN:
                    lastdownx = eventX;
                    lastdowny = eventY;

                    Thread t = new Thread(new Runnable()
                    {
                        @Override
                        public void run()
                        {
                            byte[] response = null;
                            if (connectedtoipsuccess == true)
                            {

                                if (is_start == true)
                                {
                                    response = Get(iptouse + "start");
                                    is_start = false;
                                } else
                                {
                                    textforthespeacch = "Recording stopped and preparing the file to be shared on youtube";
                                    MainActivity.this.initTTS();
                                    response = Get(iptouse + "stop");
                                    is_start = true;
                                    startuploadstatusthread = true;
                                    servercheckCounter = 0;
                                }
                                if (response != null)
                                {
                                    try
                                    {
                                        a = new String(response, "UTF-8");

                                        MainActivity.this.runOnUiThread(new Runnable()
                                        {
                                            @Override
                                            public void run()
                                            {
                                                if (a.equals("Recording started"))
                                                {
                                                    status1.setText("Recording");
                                                }
                                                if (a.equals("Recording stopped and preparing the file to be shared on youtube"))
                                                {
                                                    status1.setText("Recording Stopped");
                                                }
                                            }
                                        });
                                        textforthespeacch = a;
                                        MainActivity.this.initTTS();
                                    } catch (UnsupportedEncodingException e)
                                    {
                                        e.printStackTrace();
                                    }
                                    Logger.getLogger("MainActivity(inside thread)").info(a);
                                }
                            }
                        }
                    });
                    t.start();
                    return true;
                case MotionEvent.ACTION_MOVE:
                    break;
                case MotionEvent.ACTION_UP:                    
                    break;
                default:
                    return false;
            }
            return true;
        }

我想做的是在触摸事件中此行之后为真:

What i want to do is when in the touch event it's true after this line:

if (is_start == true)

启动计时器并在timerValue上显示记录运行时间,包括毫秒,秒和分钟,直到用户再次触摸,然后到达停止部分,然后停止计时器.

Start the timer and display on the timerValueRecord the time running including milliseconds seconds and minutes until the user touch again and then it's getting to the stop part and then to stop the timer.

问题在于根本如何构建计时器以及如何停止和启动计时器.

The problem is how to build the timer at all and how to stop and start it.

推荐答案

您可以在下面的代码中进行尝试:

You can try this below Code:

public class ShowTimer {


    private long startTime = 0L;
    private Handler customHandler = new Handler();
    long timeInMilliseconds = 0L;
    long timeSwapBuff = 0L;
    long updatedTime = 0L;

    public void StartTimer() {

        startTime = SystemClock.uptimeMillis();
        customHandler.postDelayed(updateTimerThread, 0);
    }

    public void StopTimer() {
         timeSwapBuff += timeInMilliseconds;
        customHandler.removeCallbacks(updateTimerThread);
    }

    private Runnable updateTimerThread = new Runnable() {

        public void run() {

            timeInMilliseconds = SystemClock.uptimeMillis() - startTime;

            updatedTime = timeSwapBuff + timeInMilliseconds;

            int secs = (int) (timeInMilliseconds / 1000);
            int mins = secs / 60;
            secs = secs % 60;
            int hours = mins / 60;
            mins = mins % 60;
            //int milliseconds = (int) (updatedTime % 1000);
            //+ ":" + String.format("%03d", milliseconds)
            String timer = "" + String.format("%02d", hours) + ":" + String.format("%02d", mins) + ":" + String.format("%02d", secs);
           //set yout textview to the String timer here
            customHandler.postDelayed(this, 1000);
        }

    };

您可以在要启动或停止计时器的地方使用 StartTimer() StopTimer()函数:

You can use StartTimer() and StopTimer() function where you want to start or stop the timer:

这篇关于如何通过单击按钮来启动/停止计时器,从而在Java中制作一个简单的计时器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆