Android学习笔记---第五天---基础UI组件---AnalogClock&TextClock&Chronometer(时钟与简单的计时器)
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); }}
我的博客
更多相关文章
- android:View.setTag()与View.getTag()的作用
- Windows环境下Android(安卓)Studio系列3—简单设置
- Android(安卓)Window理解(3.1)---子窗口创建过程:Dialog、PopupWind
- 踩坑之硬件加速
- Android动画特效实例
- Android(安卓)手机设置CMWAP 接入点
- 【android】为PopupWindow设置动画效果
- Android之GridView视图实现
- Android动态加载轮播图BannerView