博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android学习笔记(四)时钟、时间
阅读量:6277 次
发布时间:2019-06-22

本文共 5507 字,大约阅读时间需要 18 分钟。

AnalogClock实现时钟

 


  android.os.Handle、java.lang.Thread以及android.os.Message三对象的整合实现。

  通过生成一个Thread,在进程内调用System.currentTimeMillis()取得系统时间,并通过Message对象来通知Handler对象,Handler作为联系Activity与Thread之间的桥梁。

package com.example.test15;import java.util.Calendar;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.app.Activity;import android.view.Menu;import android.widget.AnalogClock;import android.widget.TextView;public class MainActivity extends Activity {    protected static final int GUINOTIFIER=0x1234;        private TextView mTextView;    public AnalogClock mAnalogClock;        public Calendar mCalendar;    public int mMinutes;    public int mHour;    public int mSecond;        public Handler mHandler;    private Thread mClockThread;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                mTextView=(TextView)findViewById(R.id.textView1);        mAnalogClock=(AnalogClock)findViewById(R.id.analogClock1);                //Handler来接收运行线程所需要传递的信息        mHandler=new Handler(){            public void handleMessage(Message msg){                switch(msg.what){                case MainActivity.GUINOTIFIER:                    mTextView.setText(mHour+":"+mMinutes+":"+mSecond);                    break;                }                super.handleMessage(msg);            }        };                mClockThread = new LooperThread();        mClockThread.start();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }    class LooperThread extends Thread{        public void run(){            super.run();            try{                do{                    long time = System.currentTimeMillis();                    final Calendar mCalendar=Calendar.getInstance();                    mCalendar.setTimeInMillis(time);                    mHour=mCalendar.get(Calendar.HOUR);                    mMinutes=mCalendar.get(Calendar.MINUTE);                    mSecond=mCalendar.get(mCalendar.SECOND);                                        //Thread.sleep(3000);                                        Message m=new Message();                    m.what=MainActivity.GUINOTIFIER;                    MainActivity.this.mHandler.sendMessage(m);                                    }while(MainActivity.LooperThread.interrupted()==false);            }catch(Exception e){                e.printStackTrace();            }        }    }}

 

DatePicker和TimePicker实现时间选择


  日期选择组件DatePicker 和 时间选择组件TimePicker。

  首先通过,Calendar c=Calendar.getInstance();获取系统时间和日期。

  再利用DatePicker.init()来更新日期,利用TimePicker.setOnTimeChangedListerner()来监听时间的修改(这里可以通过TimePicker.setIs24HourView来设置时间是否为24格式)。

package com.example.test16;import java.text.Format;import java.util.Calendar;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.MenuItem;import android.widget.DatePicker;import android.widget.TextView;import android.widget.TimePicker;import android.support.v4.app.NavUtils;public class MainActivity extends Activity {    private TextView mTextView;    TimePicker mTimePicker;    DatePicker mDatePicker;        private int mYear;    private int mMonth;    private int mDay;    private int mHour;    private int mMinute;        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                getDateTime();        mTextView=(TextView)findViewById(R.id.textView1);        updateDisplay();                mDatePicker=(DatePicker)findViewById(R.id.datePicker1);        mDatePicker.init(mYear, mMonth, mDay, new DatePicker.OnDateChangedListener() {                        public void onDateChanged(DatePicker view, int year, int monthOfYear,                    int dayOfMonth) {                // TODO Auto-generated method stub                mYear=year;                mMonth=monthOfYear;                mDay=dayOfMonth;                                updateDisplay();            }        });                mTimePicker=(TimePicker)findViewById(R.id.timePicker1);        mTimePicker.setIs24HourView(true);        mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {                        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {                // TODO Auto-generated method stub                mHour=hourOfDay;                mMinute=minute;                                updateDisplay();            }        });    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        getMenuInflater().inflate(R.menu.activity_main, menu);        return true;    }    public void getDateTime(){        Calendar c=Calendar.getInstance();        mYear=c.get(Calendar.YEAR);        mMonth=c.get(Calendar.MONTH);        mDay=c.get(Calendar.DAY_OF_MONTH);        mHour=c.get(Calendar.HOUR_OF_DAY);        mMinute=c.get(Calendar.MINUTE);    }        private void updateDisplay(){        mTextView.setText(                new StringBuilder().append(mYear).append("/").append(format(mMonth+1)).append("/").append(format(mDay)).append("  ")                    .append(format(mHour)).append(":").append(format(mMinute))                );    }    //int to string    private String format(int x){        String s=""+x;        if(s.length()==1)            s="0"+s;        return s;    }}

 

 

转载地址:http://qdyva.baihongyu.com/

你可能感兴趣的文章
Java中Object类的equals()和hashCode()方法深入解析
查看>>
数据库
查看>>
Vue------第二天(计算属性、侦听器、绑定Class、绑定Style)
查看>>
dojo.mixin(混合进)、dojo.extend、dojo.declare
查看>>
Python 数据类型
查看>>
iOS--环信集成并修改头像和昵称(需要自己的服务器)
查看>>
PHP版微信权限验证配置,音频文件下载,FFmpeg转码,上传OSS和删除转存服务器本地文件...
查看>>
教程前言 - 回归宣言
查看>>
PHP 7.1是否支持操作符重载?
查看>>
Vue.js 中v-for和v-if一起使用,来判断select中的option为选中项
查看>>
Java中AES加密解密以及签名校验
查看>>
定义内部类 继承 AsyncTask 来实现异步网络请求
查看>>
VC中怎么读取.txt文件
查看>>
如何清理mac系统垃圾
查看>>
企业中最佳虚拟机软件应用程序—Parallels Deskto
查看>>
Nginx配置文件详细说明
查看>>
怎么用Navicat Premium图标编辑器创建表
查看>>
Spring配置文件(2)配置方式
查看>>
MariaDB/Mysql 批量插入 批量更新
查看>>
ItelliJ IDEA开发工具使用—创建一个web项目
查看>>