zoukankan      html  css  js  c++  java
  • Android_Chronometer计时器

    最近做一个项目用到Handler 和Message ,开始时不是很明白,不了解其中的内部机制,所以开发起来有点难度,之后自己找了Android 时间服务 这一节的内容,总结了一点关于时间的知识,在这里大概写一下,也给更多有需要的童鞋参考参考:

    1. 这里首先来的是定时器Chronometer ,这是一个组件,在可视化视图中可以直接拖拽过去,然后自己设置相关的属性,我平时直接边界XML布局文件实现,个人感觉这样思路不会混乱。定时器比较简单,没有很多复杂的方法,大家只要记住重要的3个方法:start(); stop(); setBase(); 前两个方法没有参数,是启动和停止计时器的方法,后面的是重置计时器的,可以有参数,参数是从那个时间开始计时。先来看看效果图:

    步骤:

     1】 布局采用线性布局,自己砌上去就行了。不多说

     2】onChronometerTick事件方法是计时器每秒回调的方法,我们可以用它来更新UI,看下面的代码:

    package com.android.android_chronometer;

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import android.os.Bundle;
    import android.os.SystemClock;
    import android.app.Activity;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.Chronometer;
    import android.widget.Chronometer.OnChronometerTickListener;
    import android.widget.TextView;

    public class MainActivity extends Activity implements OnClickListener,
            OnChronometerTickListener {

        private Button btnStart, btnStop, btnReset;
        private TextView textViewCurrentTime;
        // 定时器,一个可以自己设定开始时间的定时器
        private Chronometer chronometer;
        private SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            btnStart = (Button) this.findViewById(R.id.buttonBegin);
            btnStop = (Button) this.findViewById(R.id.buttonStop);
            btnReset = (Button) this.findViewById(R.id.buttonReset);
            textViewCurrentTime = (TextView) this
                    .findViewById(R.id.textViewCurrentTime);
            chronometer = (Chronometer) this.findViewById(R.id.chronometer1);

            btnStart.setOnClickListener(this);
            btnStop.setOnClickListener(this);
            btnReset.setOnClickListener(this);

            chronometer.setOnChronometerTickListener(this);
            // 设定显示的计时格式
            chronometer.setFormat("计时器:%s");
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
            case R.id.buttonBegin:
                // 计时器启动
                chronometer.start();
                break;
            case R.id.buttonStop:
                // 计时器停止
                chronometer.stop();
                break;
            default:
                // 以当前时刻重新计时
                chronometer.setBase(SystemClock.elapsedRealtime());
                break;
            }
        }

        /** 定时器没秒回调的方法,这样可以在UI界面上更新数据 */
        @Override
        public void onChronometerTick(Chronometer chronometer) {
            // TODO Auto-generated method stub
            textViewCurrentTime.setText("当前时间:" + formatter.format(new Date()));
        }

    }


    3】Handler 和Message 在后面的笔记中记录。

  • 相关阅读:
    Linux下的/dev/sr0、/dev/cdrom、df命令、free命令
    CentOS6.8 yum升级高版本gcc
    php5.6配置oracle数据库扩展 oci8(windows7系统64位)
    linux命令之ifconfig
    linux 编译安装swoole
    Bootstrap面包屑导航
    bootstrap滚动监听
    bootstrap弹出框
    Bootstrap 模态框(也可以说的弹出层)
    java反射拼接方法名动态执行方法
  • 原文地址:https://www.cnblogs.com/Isaber-blogs/p/3211026.html
Copyright © 2011-2022 走看看