Chronometer实现计时器的开始停止重置功能

用Chronomete实现计时器功能

一、项目要求

1.完成Chronometer的显示和控制。
2.击开始按钮后,开始显示当前时间,并进行读秒计时,要求一定要显示中文星期,并且能够根据当前的日期,通过程序自动设置。
3.点击停止按钮后,显示当前时间,停止读秒计时
4.点击重置按钮后,显示初始状态,停止读秒计时

二、布局设计

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    >
    <Chronometer
        android:id="@+id/ch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:orientation="horizontal">

        <Button
            android:id="@+id/bt_start"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="开始计时" />

        <Button
            android:id="@+id/bt_stop"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="停止计时" />

        <Button
            android:id="@+id/bt_reset"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="重置" />

    </LinearLayout>

    <TextClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/t_c"
        android:format24Hour="yyyy-MM-dd HH:mm:ss EEEE"
        android:visibility="gone"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/t_v"
        android:visibility="visible"
        android:text="初始状态"
        />
</LinearLayout>

注意事项: android :visibility的使用,如下:

可见(visible)

XML文件:android:visibility="visible"

Java代码:view.setVisibility(View.VISIBLE);

不可见(invisible)

XML文件:android:visibility="invisible"

Java代码:view.setVisibility(View.INVISIBLE);

隐藏(GONE)

XML文件:android:visibility="gone"

Java代码:view.setVisibility(View.GONE);

效果图:



三、MainActivity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        TextClock t_c;
        TextView t_v;
        Button but_start;
        Button but_stop;
        Button but_reset;
        Chronometer ch;
        long stopTime;
        boolean flag=false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout);
        ch= (Chronometer) findViewById(R.id.ch);
        but_start=(Button) findViewById(R.id.bt_start);
        but_stop=(Button) findViewById(R.id.bt_stop);
        but_reset=(Button) findViewById(R.id.bt_reset);
        t_v=(TextView) findViewById(R.id.t_v);
        t_c=(TextClock) findViewById(R.id.t_c);
        //注册监听器
        but_start.setOnClickListener(this);
        but_stop.setOnClickListener(this);
        but_reset.setOnClickListener(this);
        ch.setOnClickListener(this);
        ch.setFormat("计时:%s");
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.bt_start:
                if (!flag){
                    flag=!flag;
                    if (stopTime!=0) {//设置开始时间
                        ch.setBase(ch.getBase()+(SystemClock.elapsedRealtime()-stopTime));
                    }else{
                        ch.setBase(SystemClock.elapsedRealtime());
                    }
                    ch.start();
                    but_start.setEnabled(false);
                    t_c.setVisibility(View.VISIBLE);
                    t_v.setVisibility(View.INVISIBLE);
                }
                break;
            case R.id.bt_stop:
                if(flag){
                    flag=!flag;
                    ch.stop();
                    stopTime = SystemClock.elapsedRealtime();
                    but_start.setEnabled(true);

                }


                break;
            case R.id.bt_reset:
                ch.stop();
                ch.setBase(SystemClock.elapsedRealtime());
                stopTime=0;
                flag=false;
                but_start.setEnabled(true);
                t_v.setVisibility(View.VISIBLE);
                t_c.setVisibility(View.GONE);
        }
    }

四、设计思路:

1.当点击停止按钮时,应当减去停止的时间
2.对重置按钮是否点击进行记录,否则会出现负数ude形式。

五、效果展示:


六、项目源代码

计时器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值