UI组件之TextView及其子类(五)计时器Chronometer
Chronometer直接繼承了TextView組件,它會顯示一段文本,顯示從某個(gè)其實(shí)時(shí)間開始,一共過了多長時(shí)間。我們看Chronometer的源碼:
可以看出計(jì)時(shí)器是直接繼承了TextView,當(dāng)然可以用TextView的所有屬性和方法。同時(shí)及時(shí)其還有自己的內(nèi)部接口OnChronometerTickListener
計(jì)時(shí)器的新增屬性和方法:
計(jì)時(shí)器的常用方法如下:
setBase(long base):設(shè)置計(jì)時(shí)器的起始時(shí)間
setFormat(String format) :設(shè)置顯示時(shí)間的格式
start() :開始計(jì)時(shí)
stop():停止計(jì)時(shí)
setOnChronometerTickListener(OnChronometerTickListener listener);為計(jì)時(shí)器綁定時(shí)間監(jiān)聽器,當(dāng)計(jì)時(shí)器改變時(shí)觸發(fā)該監(jiān)聽器
下面演示,點(diǎn)擊按鈕時(shí)開始計(jì)時(shí),再次點(diǎn)擊是停止計(jì)時(shí),顯示這段時(shí)間。注釋的部分是當(dāng)用戶點(diǎn)擊Button時(shí)系統(tǒng)開始計(jì)時(shí),當(dāng)計(jì)時(shí)超過20秒停止計(jì)時(shí)。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_horizontal"android:orientation="vertical" ><Chronometerandroid:id="@+id/chronometer1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Chronometer" /><Buttonandroid:id="@+id/button1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Button" /></LinearLayout> package com.example.chronometertest;import android.app.Activity; import android.os.Bundle; import android.os.SystemClock; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Chronometer; import android.widget.Chronometer.OnChronometerTickListener;public class MainActivity extends Activity {Chronometer ch;Button btn;int flag=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//獲取計(jì)時(shí)組件ch=(Chronometer) findViewById(R.id.chronometer1);btn=(Button) findViewById(R.id.button1);btn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif(flag==0){//設(shè)置開始計(jì)時(shí)的時(shí)間,點(diǎn)一下按鈕開始,在點(diǎn)一下停止ch.setBase(SystemClock.elapsedRealtime());ch.start();//開始flag=1;}else{ch.stop();//停止flag=0;}/* //設(shè)置開始計(jì)時(shí)的時(shí)間ch.setBase(SystemClock.elapsedRealtime());ch.start();btn.setEnabled(false);//按鈕設(shè)置不可用 */ }});//為chronometer設(shè)置事件監(jiān)聽器、當(dāng)計(jì)時(shí)器改變是觸發(fā)該監(jiān)聽器/* ch.setOnChronometerTickListener(new OnChronometerTickListener(){@Overridepublic void onChronometerTick(Chronometer chronometer) {// TODO Auto-generated method stub//如果從現(xiàn)在開始計(jì)時(shí)到現(xiàn)在超過了20秒if(SystemClock.elapsedRealtime()-chronometer.getBase()>20*1000){ch.stop();btn.setEnabled(true);}}});*/}@Overridepublic 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;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);} }
總結(jié)
以上是生活随笔為你收集整理的UI组件之TextView及其子类(五)计时器Chronometer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UI组件之TextView及其子类(四)
- 下一篇: UI组件之ImageView及其子类(一