模拟时钟(AnalogClock)

显示一个带时钟和分针的表面

会随着时间的推移变化

常用属性:

android:dial

可以为表面提供一个自定义的图片

下面我们直接看代码:

1.Activity

  1. //模拟时钟
  2. public class AnalogClockActivity extends Activity {
  3.  
  4. private TextView timeTextView;
  5. private Handler handler;
  6.  
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.analog_clock);
  10. timeTextView = (TextView) findViewById(R.id.timeTextViewId);
  11. // Handler机制发送消息
  12. handler = new Handler() {
  13. public void handleMessage(Message msg) {
  14. timeTextView.setText(currentTime());
  15. }
  16. };
  17. // 设置时间
  18. timeTextView.setText(currentTime());
  19. new CurrentTimeThread(handler).start();
  20. }
  21.  
  22. private String currentTime() {
  23. Calendar c = Calendar.getInstance();
  24. int year = c.get(Calendar.YEAR);
  25. int month = c.get(Calendar.MONTH) + 1;
  26. int day = c.get(Calendar.DAY_OF_MONTH);
  27. int hour = c.get(Calendar.HOUR_OF_DAY);
  28. int minute = c.get(Calendar.MINUTE);
  29. int second = c.get(Calendar.SECOND);
  30. //(month < 10 ? "0" + month : month)三目运算法
  31. String currentTime = year + "-" + (month < 10 ? "0" + month : month) + "-" + (day < 10 ? "0" + day : day) + " "
  32. + (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + ":"
  33. + (second < 10 ? "0" + second : second);
  34. return currentTime;
  35. }
  36.  
  37. }
  38. //开启一个子线程
  39. class CurrentTimeThread extends Thread {
  40. private Handler handler;
  41.  
  42. public CurrentTimeThread(Handler handler) {
  43. this.handler = handler;
  44. }
  45.  
  46. public void run() {
  47. while (true) {
  48. try {
  49. Thread.sleep(1000);
  50. handler.sendEmptyMessage(1);
  51. } catch (InterruptedException e) {
  52. e.printStackTrace();
  53. }
  54. }
  55. }
  56. }

2.xml布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. android:padding="5dp" >
  7.  
  8. <DigitalClock
  9. android:layout_width="wrap_content"
  10. android:layout_height="wrap_content"
  11. android:layout_gravity="center"
  12. android:textSize="20sp" />
  13. <!-- 模拟时钟 -->
  14. <AnalogClock
  15. android:layout_width="wrap_content"
  16. android:layout_height="wrap_content"
  17. android:layout_gravity="center"
  18. android:dial="@drawable/biao_pan" />
  19.  
  20. <TextView
  21. android:id="@+id/timeTextViewId"
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. android:layout_gravity="center"
  25. android:textSize="20sp" />
  26.  
  27. </LinearLayout>

3.效果图显示

模拟时钟(AnalogClock)的更多相关文章

  1. 模拟时钟(AnalogClock)和数字时钟(DigitalClock)

    Demo2\clock_demo\src\main\res\layout\activity_main.xml <LinearLayout xmlns:android="http://s ...

  2. android脚步---数字时钟和模拟时钟

    时钟UI组件是两个非常简单的组件,分为Digitalclock  和Analogclock, main.xml文件,书中程序有问题,加了两个组件,一个Button和一个<Chronometer ...

  3. Android学习笔记(20):时钟(AnalogClock和TextClock)和计时器(Chronometer)

    时钟文本TextClock继承自TextView.是用于显示当前时间的文本框. TextClock支持的XML属性和相关方法 XML属性 相关方法 说明 android:format12Hour se ...

  4. Android控件 之 TextClock & AnalogClock(模拟时钟)

    TextClock •简介 关于时间的文本显示,Android 提供了 DigitalClock 和 TextClock. DigitalClock是Android第1版本发布,功能很简单,只显示时间 ...

  5. 时钟AnalogClock和DigitalClock

    <AnalogClock android:layout_width="fill_parent" android:layout_height="fill_parent ...

  6. 一个模拟时钟的时间选择器 ClockPicker

    最近开发的一个模拟时钟的时间选择器 ClockPicker,用于 Bootstrap,或者单独作为一个 jQuery 插件. 源代码托管在 GitHub 上: ClockPicker 最近项目中需要用 ...

  7. Java多线程之sleep方法阻塞线程-模拟时钟

    package org.study2.javabase.ThreadsDemo.status; import java.text.SimpleDateFormat; import java.util. ...

  8. css模拟时钟

    css模拟时钟 思路: 画时钟数字(x,y)坐标 x = x0 + r*cos(deg) y = y0 + r*sin(deg) 知识点: 创建元素: createElement 添加元素: appe ...

  9. 【CSS3】纯CSS代码实现模拟时钟,+js对时功能。

    使用CSS3纯代码来实现模拟时钟,及指针动画功能. 在这里主要使用到css3一些基本元素: border-radius:圆角边框,画圆形:表盘 Transform:变换,旋转,扭曲:刻度盘,指针形状 ...

随机推荐

  1. git连接通过ssh连接github

    解决 git连接通过ssh连接github 1. 首先产生一个rsa的私钥和公钥 ssh-keygen -t rsa -C "15950093214@163.com"  //你的g ...

  2. 【xsy1611】 数位dp 数位dp

    这题是显然的数位$dp$,然而我居然写了一个下午!!! 我们不难想到差分,令$solve(x,y)$表示从第一个数字在区间$[0,x]$,第二个数字在区间$[0,y]$的答案. 不难发现题目中给了你一 ...

  3. 【LOJ 2542】【PKUWC2018】 随机游走(最值反演 + 树上期望dp)

    哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[ ...

  4. Spring Security构建Rest服务-0300-Restful API异常处理

    SpringBoot默认的错误处理机制: 一.测试需要的部分代码 (完整代码放在了github https://github.com/lhy1234/spring-security): UserCon ...

  5. ruby部署之Heroku

    下载安装 :https://devcenter.heroku.com/articles/heroku-cli  (我是windows,所以我下载windows) cmd黑窗口输入: $ heroku ...

  6. list转换为树结构--递归

    public static JSONArray treeMenuList(List<Map<String, Object>> menuList, Object parentId ...

  7. xml常用的error-page

    <error-page> <error-code>404</error-code> <location>/WEB-INF/jsp/errors/erro ...

  8. golang prometheus包的使用

    prometheus包提供了用于实现监控代码的metric原型和用于注册metric的registry.子包(promhttp)允许通过HTTP来暴露注册的metric或将注册的metric推送到Pu ...

  9. ActiveMQ消息持久化到Mysql数据库

    1.把连接MySQL数据库的jar文件,放到ActiveMQ的lib目录下 2.修改ActiveMQ的conf目录下的activemq.xml文件,修改数据持久化的方式2.1 修改原来的kahadb的 ...

  10. Go 程序执行顺序

    在一个 go 程序中通常包含:包.常量.变量.init().main()等元素,如果同时存在多个包,包之间存在依赖关系,每个包中存在多个 init 函数,每个文件中存在多个 init 函数,那么问题来 ...