AnalogClock(模拟时钟)直接继承View类
TextClock(文本时钟)继承TextView类
Chronometer(计时器)继承TextView类 (点击此处查看TextView)

AnalogClock

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

TextClock继承TextView所以他使用TextView的属性与方法。

我们有时在命令界面要动态的显示一个系统时间时就会去不停的刷新一个输出的文字其实TextClock也是类似的;

属性

android:format12Hour //设置为12小时时制

android:format24Hour //设置为24小时时制

android: TimeZone //设置该时钟的时区

这里提醒一下TextClock只是用来显示系统时间的那么你修改Text属性当然没有作用

写一个TextClock

    <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

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);    }}

我的博客

更多相关文章

  1. android:View.setTag()与View.getTag()的作用
  2. Windows环境下Android(安卓)Studio系列3—简单设置
  3. Android(安卓)Window理解(3.1)---子窗口创建过程:Dialog、PopupWind
  4. 踩坑之硬件加速
  5. Android动画特效实例
  6. Android(安卓)手机设置CMWAP 接入点
  7. 【android】为PopupWindow设置动画效果
  8. Android之GridView视图实现
  9. Android动态加载轮播图BannerView

随机推荐

  1. RK3399 编译recovery
  2. Expected receiver of type com.xx.xxxAc
  3. SWIG and Android
  4. 使用Bitmap遍历Assets目录下图片
  5. android 8.0 兼容问题
  6. Android利用universal-image-loader异步
  7. android 实时监听网络连接状态
  8. android 为ExpandableListView中child设
  9. 20-45万 Android(安卓)Engineer 安卓工程
  10. [Unity3D]Unity3D游戏开发之从Unity3D到E