android开发分享Android实现秒表功能

本文实例为大家分享了android实现秒表功能的具体代码,供大家参考,具体内容如下设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新activity_main.xml<?xml ver

android开发分享Android实现秒表功能实例为大家分享了android实现秒表功能的具体代码,供大家参考,具体内容如下

上述就是android开发分享Android实现秒表功能的全部内容,如果对大家有所用处且需要了解更多关于Android学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)

设计完成一个秒表,具备启停功能,正确使用工作线程完成界面刷新

Android实现秒表功能

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  <linearlayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:app="http://schemas.android.com/apk/res-auto"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical">       <linearlayout         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:orientation="horizontal"         android:gravity="center">           <textview             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:gravity="center"             android:text="秒表"             android:textsize="30sp" />     </linearlayout>      <linearlayout          android:layout_width="match_parent"          android:layout_height="wrap_content"          android:gravity="center">            <textview              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:gravity="center"              android:text="@string/_00_00_00"              android:textsize="30sp"              android:id="@+id/clock" />      </linearlayout>      <linearlayout          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:orientation="horizontal"          android:layout_gravity="center">            <button              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:text="清零"              android:id="@+id/init" />            <button              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:text="计时"              android:id="@+id/start" />            <button              android:layout_width="wrap_content"              android:layout_height="wrap_content"              android:text="停止"              android:id="@+id/stop" />      </linearlayout>      </linearlayout>

androidmanifest.xml

将activity,service在andoidmainfest.xml中注册

<?xml version="1.0" encoding="utf-8"?>  <manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.example.ex_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=".mainaactivity">              <intent-filter>                  <action android:name="android.intent.action.main" />                    <category android:name="android.intent.category.launcher" />              </intent-filter>          </activity>          <service android:name=".timeservice">            </service>      </application>    </manifest>

timeservice.java

service服务

package com.example.ex_5;    import android.app.service;  import android.content.intent;  import android.os.ibinder;  import android.util.log;  import androidx.annotation.nullable;  import java.util.date;    public class timeservice extends service {      @nullable        private date starttime = new date();      private long diff;      public thread workthread;        private runnable backgroundwork = new runnable() {          @override          public void run() {              while(!thread.interrupted()){                  date endtime = new date();                  diff = endtime.gettime()-starttime.gettime();                  mainactivity.updategui(diff);                  log.i("timeservice:the diff is",string.valueof(diff));                  try {                      thread.sleep(0);                  } catch (interruptedexception e) {                      e.printstacktrace();                  }              }          }      };        @override      public void oncreate() {          super.oncreate();          log.i("timeservice","oncreate");          workthread=new thread(null,backgroundwork,"workthread");      }        @override      public void onstart(intent intent, int startid) {          super.onstart(intent, startid);          if(!workthread.isalive()){              workthread.start();          }          log.i("timeservice","onstart");      }        @override      public void ondestroy() {          super.ondestroy();          mainactivity.updategui(0);          mainactivity.updatediff(diff);          workthread.interrupt();          log.i("timeservice","ondestroy");        }          public ibinder onbind(intent intent) {          return null;      }  }

mainactivity.java

注册按钮响应事件,更新ui界面

package com.example.ex_5;    import android.content.intent;  import android.os.bundle;  import android.os.handler;  import android.util.log;  import android.view.view;  import android.widget.button;  import android.widget.textview;    import androidx.appcompat.app.appcompatactivity;    import java.net.serversocket;    public class mainactivity extends appcompatactivity {      private static handler handler = new handler();      private static textview labelview = null;      private static string time;      private static long _diff = 0;      //更新界面      public static void updategui(long diff) {          diff += _diff;          int hours = (int) diff / (1000 * 60 * 60);          int minutes = (int) (diff - (hours * (1000 * 60 * 60))) / (1000 * 60);          int seconds = (int) (diff - (hours * (1000 * 60 * 60)) - (minutes * (1000 * 60))) / 1000;          time = hours + ":" + minutes + ":" + seconds;          handler.post(refreshlable);      }  //供停止功能使用,用于记录服务结束之时的时间      public  static void updatediff(long diff){          _diff = diff;      }  //settext      public static runnable refreshlable = new runnable() {          @override          public void run() {              labelview.settext(time);          }      };          protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_main);          button initbutton = findviewbyid(r.id.init);          final button startbutton = findviewbyid(r.id.start);          button stopbutton = findviewbyid(r.id.stop);          labelview = findviewbyid(r.id.clock);            final intent serviceintent = new intent(this, timeservice.class);          startbutton.setonclicklistener(new button.onclicklistener() {                public void onclick(view view) {                  log.i("mainactivity","clickstartbutton");                  startservice(serviceintent);              }          });          stopbutton.setonclicklistener(new button.onclicklistener(){                @override              public void onclick(view v) {                  log.i("the behead diff is",string.valueof(_diff));                  log.i("mainactivity","clickstopbutton");                  stopservice(serviceintent);              }          });          initbutton.setonclicklistener(new button.onclicklistener(){              @override              public void onclick(view v) {                  log.i("mainactivity","clickinitbutton");                  _diff = 0;                  string text = "00:00:00";                  labelview.settext(text);                  stopservice(serviceintent);              }          });      }      }

以上就是android开发分享Android实现秒表功能的全部内容,希望对大家的学习有所帮助,也希望大家多多支持<计算机技术网>。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/addevelopment/1239381.html

(0)
上一篇 2022年9月18日
下一篇 2022年9月18日

精彩推荐