用户界面View之Chronometer

来源:互联网 发布:淘宝上的中药能买吗 编辑:程序博客网 时间:2024/05/29 16:40

众里寻她千百度,蓦然回首,那人却在灯火阑珊处。——宋辛弃疾青玉案 


本讲内容:Chronometer 定时器

Chronometer是一个简单的定时器,你可以给它一个开始时间,并以此定时,或者如果你不给它一个开始时间,它将会使用你的时间通话开始。默认情况下它会显示在当前定时器的值的形式“分:秒”或“H:MM:SS的”,或者可以使用的Set(字符串)格式的定时器值到一个任意字符串


一、常用属性
android:format:定义时间的格式如:hh:mm:ss

二、常用方法
1、setBase(long base):设置倒计时定时器
2、setFormat(String format):设置显示时间的格式。
3、start():开始计时
4、stop():停止计时
5、setOnChronometerTickListener(Chronometer.OnChronometerTickListener listener):当计时器改变时调用。


示例一:


下面是res/layout/activity_main.xml 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.text1.MainActivity$PlaceholderFragment" >    <Chronometer         android:id="@+id/chronometer"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:format="計時:%s"/>    <Button         android:id="@+id/start"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="開始"/>    <Button         android:id="@+id/stop"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="停止"/>    <Button         android:id="@+id/reset"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="重置"/>    <Button         android:id="@+id/set_format"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="設置格式"/>    <Button         android:id="@+id/clear_format"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="清除格式"/></LinearLayout>

下面是MainActivity.java主界面文件:
public class MainActivity extends Activity implements OnClickListener{private Button star;private Button stop;private Button reset;private Button set_format;private Button clear_format;private Chronometer chronometer;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViews();}public void findViews() {star=(Button) findViewById(R.id.start);stop=(Button) findViewById(R.id.stop);reset=(Button) findViewById(R.id.reset);set_format=(Button) findViewById(R.id.set_format);clear_format=(Button) findViewById(R.id.clear_format);chronometer=(Chronometer) findViewById(R.id.chronometer);//chronometer.setFormat("計時:%s");star.setOnClickListener(this);stop.setOnClickListener(this);reset.setOnClickListener(this);set_format.setOnClickListener(this);clear_format.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.start:chronometer.start();break;case R.id.stop:chronometer.stop();break;case R.id.reset:chronometer.setBase(SystemClock.elapsedRealtime());//<span style="color: rgb(51, 51, 51); font-family: 'Microsoft Yahei'; font-size: 14px; line-height: 28px; white-space: pre-wrap;">设定系统时钟.</span>break;case R.id.set_format:chronometer.setFormat("定時計時器 (%s)");break;case R.id.clear_format:chronometer.setFormat(null);break;default:break;}}}


示例二:


下面是res/layout/activity_main.xml 布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical"      tools:context="com.example.text1.MainActivity$PlaceholderFragment" >       <Chronometer          android:id="@+id/chronometer"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginTop="15dp"         android:format="%s"         android:gravity="center"         android:textColor="#542039"         android:textSize="25sp"/>     <LinearLayout          android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_marginTop="10dp">         <TextView              android:layout_width="0dp"             android:layout_height="wrap_content"             android:layout_weight="2"             android:gravity="center"             android:text="设置时间:"             android:textSize="25sp"/>         <EditText              android:id="@+id/settime"             android:layout_width="0dp"             android:layout_height="wrap_content"             android:layout_weight="3"             android:inputType="number"/>     </LinearLayout>          <LinearLayout          android:layout_width="match_parent"         android:layout_height="wrap_content"         android:layout_margin="10dp">         <Button              android:id="@+id/start"             android:layout_width="0dp"             android:layout_height="wrap_content"             android:layout_weight="1"             android:text="开始记时"/>         <Button              android:id="@+id/stop"             android:layout_width="0dp"             android:layout_height="wrap_content"             android:layout_weight="1"             android:text="停止记时" />         <Button              android:id="@+id/reset"             android:layout_width="0dp"             android:layout_height="wrap_content"             android:layout_weight="1"             android:text="重置"/>     </LinearLayout>       </LinearLayout> 

下面是MainActivity.java主界面文件:

public class MainActivity extends Activity implements OnClickListener{      private Button star;      private Button stop;      private Button reset;      private EditText settime;      private Chronometer chronometer;      private int startTime=0;            @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);                    findViews();          // 设置开始讲时时间          chronometer.setBase(SystemClock.elapsedRealtime());          // 开始记时            chronometer.start();           chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {                            @Override              public void onChronometerTick(Chronometer chronometer) {                  // 如果开始计时到现在超过了startime秒                   if(SystemClock.elapsedRealtime()-chronometer.getBase()>10*1000){                       chronometer.stop();                       //给用户提示                         showDialog();                   }              }          });      }            private void findViews() {          star=(Button) findViewById(R.id.start);          stop=(Button) findViewById(R.id.stop);          reset=(Button) findViewById(R.id.reset);          settime=(EditText) findViewById(R.id.settime);          chronometer=(Chronometer) findViewById(R.id.chronometer);                    star.setOnClickListener(this);          stop.setOnClickListener(this);          reset.setOnClickListener(this);      }            private void showDialog() {          AlertDialog.Builder builder=new Builder(this);          builder.setIcon(R.drawable.ic_launcher).setTitle("警告").setMessage("时间到");          builder.setPositiveButton("确定", null).setNegativeButton("取消", null).show();      }        @Override      public void onClick(View v) {          switch (v.getId()) {          case R.id.start:              String ss=settime.getText().toString();              if(!(ss.equals("")&&ss!=null)){                  startTime=Integer.parseInt(ss);              }              // 设置开始讲时时间                chronometer.setBase(SystemClock.elapsedRealtime());                // 开始记时                chronometer.start();              break;          case R.id.stop:              chronometer.stop();              break;          case R.id.reset:              chronometer.setBase(SystemClock.elapsedRealtime());              break;          }      }  } 



Take your time and enjoy it

0 0
原创粉丝点击