带有H:MM:SS的天文钟 [英] Chronometer with H:MM:SS

查看:37
本文介绍了带有H:MM:SS的天文钟的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何显示带有H:MM:SS的天文钟?我默认读取了MM:SS和H:MM:SS.我只发现了MM:SS.

How to display Chronometer with H:MM:SS? I read MM:SS and H:MM:SS are displaying by default.I found only for MM:SS.

这是我的带有开始和停止按钮的MM:SS代码.

Here is my code for MM:SS with start and stop button.

public class MainActivity extends AppCompatActivity {

Button start,stop;
Chronometer chrono;
long time;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    start = (Button) findViewById(R.id.start);
    stop = (Button) findViewById(R.id.stop);
    chrono = (Chronometer) findViewById(R.id.chronometer);

 start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

           chrono.setBase(SystemClock.elapsedRealtime());


            chrono.start();
        }
    });

    stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            chrono.stop();

        }
    });


}

}

这是我的MainActivity的xml代码:

here is my xml code for MainActivity:

    <Chronometer
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/chronometer"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Start"
    android:id="@+id/start"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

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

推荐答案

带有H:MM:SS的天文钟

Chronometer with H:MM:SS

使用 setOnChronometerTickListener将时间分为分钟,小时和秒.

Divide the time into minute , hour and second using setOnChronometerTickListener.

使用这个......

use this ......

Chronometer chrono  = (Chronometer) findViewById(R.id.chronomete);
chrono.setOnChronometerTickListener(new OnChronometerTickListener(){
        @Override
            public void onChronometerTick(Chronometer chronometer) {
            long time = SystemClock.elapsedRealtime() - chronometer.getBase();
            int h   = (int)(time /3600000);
            int m = (int)(time - h*3600000)/60000;
            int s= (int)(time - h*3600000- m*60000)/1000 ;
            String t = (h < 10 ? "0"+h: h)+":"+(m < 10 ? "0"+m: m)+":"+ (s < 10 ? "0"+s: s);
            chronometer.setText(t);
        }
    });
    chrono.setBase(SystemClock.elapsedRealtime());
    chrono.setText("00:00:00");

编辑

开始

全局声明一个长变量 timeWhenStopped .现在是维护时间.

Declare globally a long variable timeWhenStopped . It is maintain the time .

private long timeWhenStopped = 0;

启动侦听器... ,获取timeWhenStopped并从此处开始.

Start Listener... get the timeWhenStopped and start from there.

 start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            chrono.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
            chrono.start();
        }
    }); 

停止监听器....将时间存储在timeWhenStopped并停止.

Stop Listener.... store the time in timeWhenStopped and stop.

stop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            timeWhenStopped = chrono.getBase() - SystemClock.elapsedRealtime();
            chrono.stop();

        }
    });

享受编码............

enjoy coding............

这篇关于带有H:MM:SS的天文钟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆