【Android应用实例01】计时器

学习资料
简易秒表Android源代码
自己修改以后:
【情景1】点击start,计时开始。点击stop,计时结束。点击reset,计时清零。
【情景2】点击start,计时开始。点击stop,计时结束并清零。
【情景3】上述博客中所写的。点击start计时开始,同时按钮上的文字变为pause。点击pause,计时结束。同时按钮上的文字变为start。点击reset,时间清零。
xml文件:

<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"
    tools:context="${relativePackage}.${activityClass}" >

     <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" >

        <LinearLayout
            android:id="@+id/top"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/mint"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="00"
                android:textSize="30dp" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text=":"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/sec"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="00"
                android:textSize="30dp" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/top"
            android:layout_centerHorizontal="true"
            android:orientation="horizontal" >

            <Button
                android:id="@+id/start"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="start" />
             <Button
                android:id="@+id/stop"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="stop" />

            <Button
                android:id="@+id/reset"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="reset" />
        </LinearLayout>
    </RelativeLayout>

</RelativeLayout>

MainActivity代码:
【情景1】点击start,计时开始。点击stop,计时结束。点击reset,计时清零。

package com.example.timerdemo;

import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.app.Activity;  
import android.view.Menu;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.TextView;  
public class MainActivity extends Activity {  
    private TextView mint;  
    private TextView sec;  
    private Button start;  
    private Button stop;  
    private Button reset;  
    private long timeusedinsec;  
    private boolean isstop = false;  
    private Handler mHandler = new Handler() {  
        /* 
         * edit by yuanjingchao 2014-08-04 19:10 
         */
        @Override
        public void handleMessage(Message msg) {  
            // TODO Auto-generated method stub  
            super.handleMessage(msg);  
            switch (msg.what) {  
            case 1:  
                // 添加更新ui的代码  
                if (!isstop) {  
                    updateView();  
                    mHandler.sendEmptyMessageDelayed(1, 1000);  
                }  
                break;  
            case 0:  
                break;  
            }  
        }  

    };  

    @Override
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        initViews();  
    }  
    private void initViews() {  
        mint = (TextView) findViewById(R.id.mint);  
        sec = (TextView) findViewById(R.id.sec);  
        reset = (Button) findViewById(R.id.reset);  
        start = (Button) findViewById(R.id.start); 
        stop  = (Button) findViewById(R.id.stop);       
        reset.setOnClickListener(new OnClickListener() {  
            @Override
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub                
                mint.setText("00");  
                sec.setText("00");  
                start.setText("start");  
                timeusedinsec=0;  
                isstop=true;  
            }  
        });  
        start.setOnClickListener(new OnClickListener() {  
            @Override
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                mHandler.removeMessages(1); 
                    mHandler.sendEmptyMessage(1);  
                    isstop = false;                    
            }  
        });  
        stop.setOnClickListener(new OnClickListener() {  
            @Override
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                  mHandler.sendEmptyMessage(0);  
                    isstop = true;  

            }  
        });  
    }  
    private void updateView() {  
        timeusedinsec += 1;  
        int minute = (int) (timeusedinsec / 60)%60;  
        int second = (int) (timeusedinsec % 60);  
        if (minute < 10)  
            mint.setText("0" + minute);  
        else
            mint.setText("" + minute);  
        if (second < 10)  
            sec.setText("0" + second);  
        else
            sec.setText("" + second);  
    }  
}

【情景2】点击start,计时开始。点击stop,计时结束并清零。
去掉reset按钮,只剩余start和stop。stop中代码变为:

stop.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                   mint.setText("00"); 
                   sec.setText("00"); 
                   timeusedinsec=0; 
                   isstop = true; 
                   mHandler.sendEmptyMessage(0); 
            }
        });

其余不变。
【情景3】上述博客中所写的。点击start计时开始,同时按钮上的文字变为pause。点击pause,计时结束。同时按钮上的文字变为start。点击reset,时间清零。
去掉stop按钮,只剩余start和reset。start中代码变为:

start.setOnClickListener(new OnClickListener() {  
            @Override 
            public void onClick(View arg0) {  
                // TODO Auto-generated method stub  
                mHandler.removeMessages(1);  
                String aaa=start.getText().toString();  
                if(aaa.equals("start")){  
                    mHandler.sendEmptyMessage(1);  
                    isstop = false;  
                    start.setText("pause");  
                }else {  
                    mHandler.sendEmptyMessage(0);  
                    isstop = true;  
                    start.setText("start");  
                }  

            }  
        });

​其余不变。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值