android wear 制作时钟界面,android wear开发之绘制表盘.doc
android wear开发之绘制表盘
当你配置完工程并且添加了实现表盘service的类后,你可以开始初始化并绘制表盘。Android SDK中包含表盘示例,示例位置在android-sdk/samples/android-21/wearable/WatchFace目录下。service很多方面的实现描述都在这里面,例如初始化和检测设备功能,可以应用于任何表盘,所以你可以在你的表盘中复用这些代码。
当系统加载你的service,你应该分配和初始化大部分表盘所需的资源,包括加载bitmap资源,创建定时器对象来运行自定义动画,配置paint对象和风格,以及执行其他计算。你可以只执行一次这些操作并且复用他们的执行结果。这样可以提高表盘的性能。
初始化表盘有以下几步:
声明自定义定时器变量,图像对象和其他元素。
在Engine.onCreate()方法中初始化表盘元素。
在Engine.onVisibilityChanged()方法中初始化自定义的定时器。
初始化变量
当系统加载你的service的时候,会在不同的实现地方访问你所初始化的资源,所以你可以复用它们。你可以在你的WatchFaceService.Engine实现中声明这些资源变量。
为下面这些元素声明变量:
图像对象
大部分表盘至少包含一个bitmap图片作为表盘背景图,你可以使用其他bitmap图片来呈现时钟指针或其他表盘设计元素。
定时器
当时间改变的时候系统每分钟通知一次表盘,但一些表盘会在自定义的时间间隔下显示动画。在这些案例中,你需要提供一个自定义的定时器来频繁刷新你的表盘。
时区变化receiver
当用户在旅行途中他们可以自适应时区,系统会发送事件广播。你的service必须注册一个广播的receiver,当时区发生改变和更新的时候会受到通知。
在表盘代码示例中的AnalogWatchFaceService.Engine类简单的定义了这些变量。自定义定时器实现了一个handler实例,使用线程消息队列来发送和处理延迟消息。在这个表盘示例中,自定义的定时器每秒触发一次。当定时器触发的时候,handler会调用invalid()方法,并且系统之后会调用ondraw()方法来重绘表盘。
private class Engine extends CanvasWatchFaceService.Engine {
static final int MSG_UPDATE_TIME = 0;
/* a time object */
Time mTime;
/* device features */
boolean mLowBitAmbient;
/* graphic objects */
Bitmap mBackgroundBitmap;
Bitmap mBackgroundScaledBitmap;
Paint mHourPaint;
Paint mMinutePaint;
...
/* handler to update the time once a second in interactive mode */
final Handler mUpdateTimeHandler = new Handler() {
@Override
public void handleMessage(Message message) {
switch (message.what) {
case MSG_UPDATE_TIME:
invalidate();
if (shouldTimerBeRunning()) {
long timeMs = System.currentTimeMillis();
long delayMs = INTERACTIVE_UPDATE_RATE_MS
- (timeMs % INTERACTIVE_UPDATE_RATE_MS);
mUpdateTimeHandler
.sendEmptyMessageDelayed(MSG_UPDATE_TIME, delayMs);
}
break;
}
}
};
/* receiver to update the time zone */
final BroadcastReceiver mTimeZoneReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
mTime.clear(intent.getStringExtra("time-zone"));
mTime.setToNow();
}
};
/* service methods (see other sections) */
android wear 制作时钟界面,android wear开发之绘制表盘.doc相关推荐
- Android Studio 制作微信界面 下
主界面 上一篇文章的链接: Android Studio 制作微信界面 上_nazonomaster的博客-CSDN博客https://blog.csdn.net/nazonomaster/artic ...
- Android Studio 制作微信界面 上
工程功能介绍 打开app,首先是个闪屏界面(常见于一般打开app时的小广告),设置时间为2s后进入登录界面.在登录界面中,中间可以输入密码,点击登录按钮进入微信的界面. 微信的界面由4个fragm ...
- Android多功能时钟源代码,Android多功能时钟开发案例(实战篇)
上一篇为大家介绍的是Android多功能时钟开发基础内容,大家可以回顾一下,Android多功能时钟开发案例(基础篇) 接下来进入实战,快点来学习吧. 一.时钟 在布局文件中我们看到,界面上只有一个T ...
- android仿酷狗界面,Android仿酷狗动感歌词(支持翻译和音译歌词)显示效果
简介 该开源依赖库是乐乐音乐播放器里的一个歌词模块功能,现在把该功能模块独立出来进行优化,并弄成了一个开源依赖库,其它音乐播放器项目只要引用该库并调用接口,便可轻松实现与乐乐音乐播放器一样的动感歌词显 ...
- android里qq登录界面,Android仿QQ登陆窗口实现原理
今天根据腾讯qq,我们做一个练习,来学习如何制作一个漂亮的布局.首先看一下官方图片 还是一个启动画面,之后进入登录页面,导航页面就不介绍了,大家可以参考微信的导航页面.首先程序进入SplashActi ...
- android studio制作目录布局,Android Studio:新创建的目录未出现在文件夹Vi中
9个解决方案 136 votes 事实证明,顶部有一个选择器,默认设置为显示Android. 如果您将切换按钮向下拨到"包",您可以看到自己的包. Aggressor answer ...
- android logo制作教程视频,android開机logo制作详细步骤.docx
android開机logo制作详细步骤 Android 开机画面制作详解:(andorid 学习网站:)android 开机画面共有3个部分:一:linux kernel 的开机画面(/kernel/ ...
- android记账本登录界面,Android记账本开发(一):整体UI界面布局
今天开始进行记账本的开发. 主要想法表述: 1.与用户界面交互的主要有三个界面,总资金管理,收入界面管理,支出管理. 2.实现登录注册功能,在数据库中不同用户有着不同的数据记录. 其他细节在具体开发中 ...
- android 程序必须有界面,Android开发之开机启动没有界面的应用程序
在Android系统中,有界面的app一定是有Activity的,没有界面的app,那就是一个Service了. Service如何启动呢?办法和Activity的启动一样,也是Intent对象.我讲 ...
- android模仿快手作品界面,android开发:使用DrawerLayout仿快手侧滑菜单栏
先看对比一下我们写的效果和别人的效果: activity的xml布局: 1.根部局是DrawerLayout布局,必须设置openDrawer属性: tools:openDrawer="st ...
最新文章
- 【每日一念经】四轮面试,我如何拿到美团的offer?
- windows adb shell 乱码
- python编辑时怎样换行_python怎么换行输入
- ASP.NET MVC增删改查
- 嵌入式linux tftp rpm,嵌入式linux的tftp配置
- mysql 8函数索引_新特性解读 | MySQL 8.0 索引特性1-函数索引
- (并查集)The Suspects
- 在Node.js中操作文件系统(一)
- C语言串 typedef char String[MaxLength + 1]
- 017、Linux下超实用的性能监测工具
- python读取、保存npy文件
- Windows 使用技巧之WinZIP密码破解
- ios textView输入框光标问题
- 3种CSS3实现的网页过度效果代码,可独立用于网页设计展示
- 漫步在云台山茶园穿越,感受来自李亮先生的美意
- 【趣味】智能AI祝福语
- 1药网发布Q4财报:仍处于持续亏损状态,还要推动子公司上市
- 如何学习一门编程语言,从入门到不放弃!
- 图像加密 关于二维Arnold变换,广义Arnold变换和更一般形式变换的练习(Matlab实现)
- 双面打印无效选择了文件服务器,使用高级选项打印(纸盘选择,双面打印,装订)...