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

本文实例为大家分享了android实现app秒表功能的具体代码,供大家参考,具体内容如下这几天一直在看安卓,也正好赶上老师布置的作业,所以就做了一个秒表。自己参考了一下别人的图标,有了一些灵感所以顺便

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

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

这几天一直在看安卓,也正好赶上老师布置的作业,所以就做了一个秒表。自己参考了一下别人的图标,有了一些灵感所以顺便也设计了一下界面。下面先贴一下秒表的界面:

打开秒表后的第一个界面

Android实现APP秒表功能

点击开始计时,开始键变为暂停,记录和停止开始变实:

Android实现APP秒表功能

点击记录: 

Android实现APP秒表功能

记录满了之后自动上移,通过滑动可以查看前面的:

Android实现APP秒表功能

点击暂停:

Android实现APP秒表功能

停止:

Android实现APP秒表功能

重新开始和记录:

Android实现APP秒表功能

双击返回键退出:

Android实现APP秒表功能

下面贴出activity的代码:

package com.example.stopwatch;     import java.util.timer;  import java.util.timertask;     import android.r.bool;     import android.app.activity;  import android.app.alertdialog;  import android.app.alertdialog.builder;  import android.app.dialog;  import android.content.dialoginterface;  import android.content.intent;  import android.content.res.assetmanager;  import android.content.res.colorstatelist;  import android.graphics.color;  import android.graphics.typeface;  import android.graphics.drawable.drawable;  import android.os.bundle;  import android.os.handler;  import android.os.message;  import android.text.html;  import android.view.gravity;  import android.view.keyevent;  import android.view.menu;  import android.view.view;  import android.view.view.onclicklistener;  import android.widget.button;  import android.widget.imageview;  import android.widget.linearlayout;  import android.widget.scrollview;  import android.widget.textview;  import android.widget.toast;        public class mainactivity extends activity {                  private boolean mstart = false;      private long mstarttime;      private boolean misrecorded;      private linearlayout linearlayout;      private int recordtimes;      private long currenttime;      private long lasttime = 0;      private long tmptime;      private boolean isexit = false;            //更新显示时间的关键      private handler mhandler = new handler() {          public void handlemessage(message msg) {              switch (msg.what) {              case 1:                  if (mstart) {                      updatetime();                      mhandler.sendemptymessage(1);                  }                  break;              case 0:                  break;              default:                  break;              }          }      };            @override      protected void oncreate(bundle savedinstancestate) {          super.oncreate(savedinstancestate);          setcontentview(r.layout.activity_main);                    textview textview1 = (textview) findviewbyid(r.id.textview1);          textview textview2 = (textview) findviewbyid(r.id.textview2);                    //修改时间的字体          assetmanager mgr=getassets();//得到assetmanager          typeface tf=typeface.createfromasset(mgr, "fonts/lanting.ttf");//根据路径得到typeface          textview1.settypeface(tf);          textview2.settypeface(tf);                    final button button_start = (button) findviewbyid(r.id.button_start);          final button button_record = (button) findviewbyid(r.id.button_record);          final button button_stop = (button) findviewbyid(r.id.button_stop);                    button_start.settext("开始");                        //监听开始按钮          button_start.setonclicklistener(new onclicklistener(){                 public void onclick(view v)              {                  if(button_start.gettext() == "开始") {                      mstart = true;                      mstarttime = system.currenttimemillis();                      button_start.settext("暂停");                      button_record.setbackgroundresource(r.drawable.button_record_full);                      button_stop.setbackgroundresource(r.drawable.button_stop_full);                                                lasttime = 0;                      recordtimes = 0;                      linearlayout = (linearlayout) findviewbyid(r.id.linearlayout1);                      linearlayout.removeallviewsinlayout();                        mhandler.sendemptymessage(1);                  }                  else if(button_start.gettext() == "暂停"){                      mstart = false;                      tmptime = system.currenttimemillis();                      button_start.settext("继续");                                            button_record.setbackgroundresource(r.drawable.button_record_half);                      mhandler.sendemptymessage(0);                  }                  else {                      mstart = true;                      long tmp = system.currenttimemillis() - tmptime;                      mstarttime = mstarttime + tmp;                      button_start.settext("暂停");                      button_record.setbackgroundresource(r.drawable.button_record_full);                      mhandler.sendemptymessage(1);                  }              }           });                    //监听停止按钮          button_stop.setonclicklistener(new onclicklistener() {                            public void onclick(view arg0) {                  // todo auto-generated method stub                  if(button_start.gettext() != "开始"){                      mstart = false;                      button_start.settext("开始");                      button_stop.setbackgroundresource(r.drawable.button_stop_half);                      button_record.setbackgroundresource(r.drawable.button_record_half);                      textview textview1 = (textview) findviewbyid(r.id.textview1);                      textview textview2 = (textview) findviewbyid(r.id.textview2);                      textview1.settext("00:00:00");                      textview2.settext("00");                      }              }          });                    //监听记录按钮          button_record.setonclicklistener(new onclicklistener() {                 public void onclick(view arg0) {                  // todo auto-generated method stub                  if(button_start.gettext() == "暂停"){                      misrecorded = true;                      mhandler.sendemptymessage(1);                  }              }          });      }            //更新显示时间和显示记录的时间      private void updatetime() {          textview textview1 = (textview) findviewbyid(r.id.textview1);          textview textview2 = (textview) findviewbyid(r.id.textview2);                  currenttime = system.currenttimemillis();          long atime = currenttime - mstarttime;          stringbuilder[] sb1 = new stringbuilder[2];           sb1[0] = new stringbuilder();           sb1[1] = new stringbuilder();          sb1 = gettimeformat(atime);          string str;          textview1.settext(sb1[0]);          textview2.settext(sb1[1]);                              if(misrecorded) {                recordtimes++;                string rec;                long btime;                if (recordtimes == 1) {                    btime = atime;                                    }                else {                  btime = currenttime - lasttime;                }                                stringbuilder[] sb2 = new stringbuilder[2];               sb2[0] = new stringbuilder();               sb2[1] = new stringbuilder();              sb2 = gettimeformat(btime);              if(recordtimes < 10)              {                  rec = '0' + string.valueof(recordtimes);              }              else {                  rec = string.valueof(recordtimes);              }                str = "<font color='orange'>" + rec + "</font>" + " <small>" + sb2[0].tostring() +"." + sb2[1].tostring() + "</small>" + " ";                str += "<b>" + sb1[0].tostring() + ".<small>" + sb1[1].tostring() + "</small>" + "</b>";                charsequence charsequence = html.fromhtml(str);                                textview text1 = new textview(this);              text1.settext(charsequence);              text1.settextsize(23);              text1.settextcolor(color.white);              text1.setgravity(gravity.center);              assetmanager mgr=getassets();//得到assetmanager              typeface tf=typeface.createfromasset(mgr, "fonts/lanting.ttf");//根据路径得到typeface              text1.settypeface(tf);                            textview text2 = new textview(this);              text2.settext(" ");              text2.settextsize(10);              linearlayout.addview(text2);              linearlayout.addview(text1);                             final scrollview scrollview = (scrollview) findviewbyid(r.id.scrollview1);              runnable mscrolltobottom = new runnable()               {                     @override                    public void run()                  {                         int off = linearlayout.getmeasuredheight() - scrollview.getheight();                         if (off > 0)                       {                             scrollview.scrollto(0, off);                         }                                            }                 };               mhandler.post(mscrolltobottom);               misrecorded =false;                lasttime = currenttime;            }      }            //把毫秒转为要显示的格式      public stringbuilder[] gettimeformat(long time) {          long tmp = time;          time = time / 1000;            int second = (int) (time % 60);           int minute = (int) (time / 60) % 60;           int hour = (int) (time / 3600);           int minsecond = (int) (tmp / 10 % 100);           stringbuilder[] sb = new stringbuilder[2];           sb[0] = new stringbuilder();           sb[1] = new stringbuilder();                     if(hour < 10) {               sb[0].append('0');               sb[0].append(string.valueof(hour));           }           else {            sb[0].append(string.valueof(hour));            }            sb[0].append(':');            if(minute < 10) {                sb[0].append('0');                sb[0].append(string.valueof(minute));            }            else {                sb[0].append(string.valueof(minute));            }            sb[0].append(':');            if(second < 10) {                sb[0].append('0');                sb[0].append(string.valueof(second));            }            else {            sb[0].append(string.valueof(second));            }            if(minsecond < 10) {                sb[1].append('0');                sb[1].append(minsecond);            }           else {               sb[1].append(minsecond);           }            return sb;      }            //监听返回键,实现点击返回键时弹出对话,连续两次点击退出      @override      public boolean onkeydown(int keycode, android.view.keyevent event) {          if (keycode == keyevent.keycode_back && event.getrepeatcount() == 0) {              toast();              return false;          }          else if (keycode == keyevent.keycode_back && event.getrepeatcount() == 1) {              mainactivity.this.finish();           }          return false;      };            /*protected void gialog() {          // todo auto-generated method stub          alertdialog.builder builder = new builder(mainactivity.this);          builder.settitle("提示");          builder.setmessage("确定要退出吗?");          builder.setpositivebutton("确认",                   new android.content.dialoginterface.onclicklistener() {                       @override                      public void onclick(dialoginterface dialog, int which) {                           dialog.dismiss();                           mainactivity.this.finish();                       }                   });           builder.setnegativebutton("取消",                   new android.content.dialoginterface.onclicklistener() {                       @override                      public void onclick(dialoginterface dialog, int which) {                           dialog.dismiss();                       }                   });           builder.create().show();       }*/            protected void toast() {          timer texit = null;          if (isexit == false) {          isexit = true; // 准备退出          toast texttoast = toast.maketext(this, "小样!想退出?!", toast.length_long);          texttoast.show();          texit = new timer();          texit.schedule(new timertask() {              @override              public void run() {              isexit = false; // 取消退出              }              }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务           }           else {              finish();              system.exit(0);          }                }         @override      public boolean oncreateoptionsmenu(menu menu) {          // inflate the menu; this adds items to the action bar if it is present.          getmenuinflater().inflate(r.menu.activity_main, menu);          return true;      }  }

布局文件的代码:

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent" >         <imageview          android:id="@+id/imageview1"          android:layout_width="fill_parent"          android:layout_height="fill_parent"          android:layout_alignparentleft="true"          android:src="@drawable/backguand_new"           android:scaletype="fitcenter"/>         <button          android:id="@+id/button_start"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignparentbottom="true"          android:layout_centerhorizontal="true"          android:layout_marginbottom="12dp"          android:text="开始"          android:textcolor="#ffffff"           android:background="@drawable/button_start_full"/>         <button          android:id="@+id/button_stop"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignbaseline="@+id/button_start"          android:layout_alignbottom="@+id/button_start"          android:layout_marginleft="29dp"          android:layout_torightof="@+id/button_start"          android:background="@drawable/button_stop_half"          android:text="停止"          android:textcolor="#ffffff" />         <button          android:id="@+id/button_record"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignbaseline="@+id/button_start"          android:layout_alignbottom="@+id/button_start"          android:layout_marginright="28dp"          android:layout_toleftof="@+id/button_start"          android:background="@drawable/button_record_half"          android:text="记录"          android:textcolor="#ffffff" />         <imageview          android:id="@+id/imageview2"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_above="@+id/button_start"          android:layout_centerhorizontal="true"          android:layout_marginbottom="20dp"          android:src="@drawable/showrecord_new" />         <scrollview          android:id="@+id/scrollview1"          android:layout_width="wrap_content"          android:layout_height="340dp"          android:layout_alignleft="@+id/imageview2"          android:layout_alignright="@+id/imageview2"          android:layout_aligntop="@+id/imageview2"           android:scrollbars="none">             <linearlayout              android:id="@+id/linearlayout1"              android:layout_width="match_parent"              android:layout_height="match_parent"              android:orientation="vertical" >          </linearlayout>      </scrollview>         <textview          android:id="@+id/textview2"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_alignbaseline="@+id/textview1"          android:layout_alignbottom="@+id/textview1"          android:layout_torightof="@+id/textview1"          android:text="00"           android:textcolor="#ffffff"          android:textsize="40dp"/>         <textview          android:id="@+id/textview1"          android:layout_width="wrap_content"          android:layout_height="wrap_content"          android:layout_above="@+id/imageview2"          android:layout_marginbottom="5dp"          android:layout_alignleft="@+id/imageview2"          android:text="00:00:00"          android:textappearance="?android:attr/textappearancelarge"          android:textcolor="#ffffff"          android:textsize="60dp" />     </relativelayout>

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

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

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

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

精彩推荐