package com.example.datetest; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import android.app.Activity; import android.content.ContentResolver; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.widget.TextView; public class MainActivity extends Activity { private Thread clockThread; private boolean isRunning = true; private Handler handler; private int mYear; private int mMonth; private int mDay; private int mHour; private int mMinute; TextView text1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text1 = (TextView) findViewById(R.id.textView1); final 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); String YY = String.valueOf(mYear); String MM = String.valueOf(mMonth); String DD = String.valueOf(mDay); String hh = String.valueOf(mHour); String mm = String.valueOf(mMinute); SimpleDateFormat dateformat1 = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss a E"); Date d = new Date(); ContentResolver cv = this.getContentResolver(); final String strTimeFormat = android.provider.Settings.System .getString(cv, android.provider.Settings.System.TIME_12_24); // if (strTimeFormat.equals("12")) { // // SimpleDateFormat dateformat2 = new SimpleDateFormat( // "yyyy-MM-dd a hh:mm:ss E"); // String a1 = dateformat2.format(d); // text1.setText(a1); // } // // else if (strTimeFormat.equals("24")) { // // SimpleDateFormat dateformat3 = new SimpleDateFormat( // "yyyy-MM-dd HH:mm:ss E"); // String a1 = dateformat3.format(d); // text1.setText(a1); // } // handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 0: SimpleDateFormat dateformat1 = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss a E"); String a1 = dateformat1.format(msg.obj); text1.setText(a1); } } }; clockThread = new Thread(new Runnable() { @Override public void run() { while (isRunning) { try { Thread.currentThread().sleep(1000); Message msg = new Message(); msg.obj = new Date(); msg.what = 0; handler.sendMessage(msg); } catch (InterruptedException e) { e.printStackTrace(); } } } }); clockThread.start(); // G 年代标志符 // y 年 // M 月 // d 日 // h 时 在上午或下午 (1~12) // H 时 在一天中 (0~23) // m 分 // s 秒 // S 毫秒 // E 星期 // D 一年中的第几天 // F 一月中第几个星期几 // w 一年中第几个星期 // W 一月中第几个星期 // a 上午 / 下午 标记符 // k 时 在一天中 (1~24) // K 时 在上午或下午 (0~11) // z 时区 } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
参考资料:http://tech.it168.com/a2011/0922/1250/000001250289_all.shtml
相关推荐
通过这个简单的数字时钟项目,开发者可以学习到Android应用开发的基础知识,包括线程通信、UI设计、时间处理以及代码组织和注释的重要性。这个项目不仅是一个实用的小应用,也是进一步深入Android开发的良好起点。
首先,我们需要创建一个新的Android项目,并在`main.xml`布局文件中添加一个TextView,用于显示数字时钟的时间。布局文件可能会这样设计: ```xml <LinearLayout xmlns:android=...
数字时钟通过获取当前时间(小时、分钟和秒)并以数字格式显示这些信息。在Java中,我们可以使用`java.time`包中的类来实现这一功能,特别是`LocalTime`类,它代表一天中的时间部分,不包括日期。 以下是一个基本的...
5. **UI设计**: 源码合集中可能包含了各种时钟和闹钟界面的设计,如数字时钟、模拟时钟等,涉及到了Android的布局管理器(如LinearLayout, RelativeLayout, RecyclerView等)和自定义View的使用。 6. **设置界面**:...
通过这个自定义时钟的例子,开发者可以学习到Android UI编程的基础,包括视图绘制、时间同步、多线程更新以及事件处理等关键技能。这些知识对于开发任何复杂的Android应用都是至关重要的。同时,自定义时钟也是提升...
自定义时钟通常会用到`Canvas`对象,它提供了各种绘图操作,如`drawLine()`用于绘制指针,`drawText()`用于显示数字,以及`drawCircle()`用于绘制时钟的圆盘。这些API需要配合`Paint`对象来设置颜色、线宽、字体等...
它在设计上受到了MIUI时钟的启发,同时可能包含了计时器功能,提供了一种视觉上与真实钟表相似且功能丰富的数字时间显示方式。这样的应用需要开发者深入理解Android图形绘制、多线程以及时间管理等知识,体现了...
- 部署到移动设备上,如Android或iOS应用,计时器同样重要,但需遵循相应平台的开发规范。 6. 文件名称列表中的"Code"可能是指源代码文件,开发时通常包含头文件、源文件、资源文件等,这些文件用于构建并实现计时...
"liveClock"项目就是一个很好的例子,它提供了一个Android时钟功能,且采用了圆形视图的设计,使得时间的展示更为直观和美观。这款应用以独特的圆形视图型时钟,将传统的数字或指针式时钟转变成动态、直观的视觉体验...
对于秒表/时钟,我们需要绘制时、分、秒的指针,以及可能的数字显示。 4. **测量尺寸**:通过重写`onMeasure()`方法,确定自定义View的大小。根据需求,可以设置固定大小或根据父布局自动调整大小。 5. **更新和...
这个应用可能是一个定制化的数字或模拟时钟界面,具有独特的设计或功能。 描述中的“源码参考,欢迎下载”提示这是一个学习资源,适合那些想要深入了解Android应用开发或者需要参考实例的开发者。通过查看源码,...
秒表功能需要实时更新时间显示,这涉及到Android的线程管理和计时器。开发者可能会使用`Handler`和`Runnable`来实现UI的定时更新。同时,秒表的启动、暂停和重置功能需要良好的状态管理。 3. **倒计时(Countdown...
- **DigitalClock/AnalogClock**:Android提供了两种类型的时钟组件,数字时钟(DigitalClock)和模拟时钟(AnalogClock)。它们会自动同步系统时间,无需额外编程。 - **TimePicker**:如果需要用户自定义时间,...
在这个章节中,开发者将学习如何利用Android SDK和OPhone SDK来创建一个数字时钟应用,即`ch15_digitclock_activity`。 首先,`ch15_digitclock_activity`代表的是一个具体的Activity,它是Android应用程序中的核心...
在Android开发中,`SurfaceView`是一个特殊类型的视图,常用于高性能的图形渲染,例如游戏、视频播放或自定义绘图,如本例中的时钟应用。它提供了直接访问到设备的帧缓冲区,允许开发者在单独的线程中进行低级别的...
XML中使用`<TimePicker>`标签,通过`android:timePickerMode`属性设置样式(默认为数字时钟)。 - **事件监听**:使用`TimePicker.OnTimeChangedListener`监听时间变化,`onTimeChanged(TimePicker view, int ...
2. **用户界面(UI)设计**:手机时钟的UI通常包括数字时钟、模拟时钟、日期显示、定时器和闹钟设置等组件。开发者需要掌握布局管理,如线性布局、相对布局或网格布局,以及自定义视图的绘制。对于Android,可以使用...
通过在UI线程中不断更新和启动这些动画,时钟指针会呈现出平滑的转动效果。 第三种方法可能是利用硬件加速和Shader来提升性能和视觉效果。Android系统支持使用OpenGL ES进行图形渲染,这能带来更流畅的动画和更丰富...
这个项目是关于创建一个能够显示在用户手机主屏幕上的模拟时钟组件。 描述中的“Source code For Widget”提示我们,这个压缩包包含了实现这个功能的源代码。这意味着我们可以深入研究代码,理解其工作原理,甚至...