AnalogClock(模拟时钟)直接继承View类
TextClock(文本时钟)继承TextView类
Chronometer(计时器)继承TextView类 (点击此处查看TextView)
AnalogClock是直接继承了View类,它用于显示一个模拟时钟但他没有秒钟;
android:dial //设置该时钟的表盘图片
android:hand_huor //设置该时钟的时针图片
android:hand_minute //设置该时钟的分针图片
<AnalogClock android:layout_width="wrap_content" android:layout_height="wrap_content" android:dial="@drawable/timg" />
这个组件十分简单也没什么好说的
TextClock继承TextView所以他使用TextView的属性与方法。
我们有时在命令界面要动态的显示一个系统时间时就会去不停的刷新一个输出的文字其实TextClock也是类似的;
android:format12Hour //设置为12小时时制
android:format24Hour //设置为24小时时制
android: TimeZone //设置该时钟的时区
这里提醒一下TextClock只是用来显示系统时间的那么你修改Text属性当然没有作用
<TextClock android:layout_width="wrap_content" android:layout_height="wrap_content" android:format12Hour="yyyy年MM月dd日H:mma EEEE" android:drawableEnd="@drawable/ic_launcher" android:textSize="30dp" />
Chronometer这个类也继承TextView,他用于计时我们可以用它来实现一个秒表。
android:format //设置显示时间格式
setFormat(String format); //设置显示时间格式
setBase(long base); //设置计时器的起始时间
start(); //开始计时
stpo(); //停止计时
setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener);
//绑定一个事件监听器,当计时器改变时触发该监听器;
<Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30dp" android:id="@+id/newChronometer"/>
newChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) {//这里chronometer是触发该监听器的对象 if(SystemClock.elapsedRealtime()- chronometer.getBase()>60000) { //SystemClock.elapsedRealtime()返回毫秒,自启动以来开始计时,包括睡眠的时间。 chronometer.stop();//停止计时 stopButton.setEnabled(false);//将stopButton设置为不可用 startButton.setEnabled(true);//将stopButton设置为可用 } } });
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <AnalogClock android:layout_width="100sp" android:layout_height="wrap_content" android:dial="@drawable/timg" /> <TextClock android:layout_width="wrap_content" android:layout_height="wrap_content" android:format12Hour="yyyy年MM月dd日H:mma EEEE" android:drawableEnd="@drawable/ic_launcher" android:textSize="30dp" /> <Chronometer android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30dp" android:id="@+id/newChronometer"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/startButton" android:text="开始"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/stopButton" android:text="停止" android:enabled="false"/> </LinearLayout> </LinearLayout>
package cn.demail.myapplication; import android.os.Bundle; import android.os.SystemClock; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Chronometer; public class Clocktmp extends AppCompatActivity{ private Button startButton,stopButton; private Chronometer newChronometer; public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.clocklayout); startButton=(Button)findViewById(R.id.startButton); stopButton=(Button)findViewById(R.id.stopButton); newChronometer=(Chronometer)findViewById(R.id.newChronometer); newChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() { @Override public void onChronometerTick(Chronometer chronometer) { if(SystemClock.elapsedRealtime()- chronometer.getBase()>60000) { chronometer.stop(); stopButton.setEnabled(false); startButton.setEnabled(true); } } }); startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startButton.setEnabled(false); stopButton.setEnabled(true); newChronometer.setBase(SystemClock.elapsedRealtime()); newChronometer.start(); } }); stopButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startButton.setEnabled(true); stopButton.setEnabled(false); newChronometer.stop(); } }); } @Override public 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(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }