android wear开发之绘制表盘

android wear开发之绘制表盘

ID:40520969

大小:182.51 KB

页数:8页

时间:2019-08-04

android wear开发之绘制表盘_第1页
android wear开发之绘制表盘_第2页
android wear开发之绘制表盘_第3页
android wear开发之绘制表盘_第4页
android wear开发之绘制表盘_第5页
资源描述:

《android wear开发之绘制表盘》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、当你配置完工程并且添加了实现表盘service的类后,你可以开始初始化并绘制表盘。AndroidSDK中包含表盘示例,示例位置在android-sdk/samples/android-21/wearable/WatchFace目录下。service很多方面的实现描述都在这里面,例如初始化和检测设备功能,可以应用于任何表盘,所以你可以在你的表盘中复用这些代码。初始化你的表盘当系统加载你的service,你应该分配和初始化大部分表盘所需的资源,包括加载bitmap资源,创建定时器对象来运行自定义动画,配置paint对象和风格,以及执行其他计算。你可

2、以只执行一次这些操作并且复用他们的执行结果。这样可以提高表盘的性能。初始化表盘有以下几步:1.声明自定义定时器变量,图像对象和其他元素。2.在Engine.onCreate()方法中初始化表盘元素。3.在Engine.onVisibilityChanged()方法中初始化自定义的定时器。初始化变量当系统加载你的service的时候,会在不同的实现地方访问你所初始化的资源,所以你可以复用它们。你可以在你的WatchFaceService.Engine实现中声明这些资源变量。为下面这些元素声明变量:图像对象大部分表盘至少包含一个bitmap图片作为

3、表盘背景图,你可以使用其他bitmap图片来呈现时钟指针或其他表盘设计元素。定时器当时间改变的时候系统每分钟通知一次表盘,但一些表盘会在自定义的时间间隔下显示动画。在这些案例中,你需要提供一个自定义的定时器来频繁刷新你的表盘。时区变化receiver当用户在旅行途中他们可以自适应时区,系统会发送事件广播。你的service必须注册一个广播的receiver,当时区发生改变和更新的时候会受到通知。在表盘代码示例中的AnalogWatchFaceService.Engine类简单的定义了这些变量。自定义定时器实现了一个handler实例,使用线程消

4、息队列来发送和处理延迟消息。在这个表盘示例中,自定义的定时器每秒触发一次。当定时器触发的时候,handler会调用invalid()方法,并且系统之后会调用ondraw()方法来重绘表盘。privateclassEngineextendsCanvasWatchFaceService.Engine{ staticfinalintMSG_UPDATE_TIME=0; /*atimeobject*/ TimemTime; /*devicefeatures*/ booleanmLowBitAmbient; /*graphicobjects*/ B

5、itmapmBackgroundBitmap; BitmapmBackgroundScaledBitmap; PaintmHourPaint; PaintmMinutePaint; ... /*handlertoupdatethetimeonceasecondininteractivemode*/ finalHandlermUpdateTimeHandler=newHandler(){ @Override publicvoidhandleMessage(Messagemessage){ switch(message.what){ caseMS

6、G_UPDATE_TIME: invalidate(); if(shouldTimerBeRunning()){ longtimeMs=System.currentTimeMillis(); longdelayMs=INTERACTIVE_UPDATE_RATE_MS -(timeMs%INTERACTIVE_UPDATE_RATE_MS); mUpdateTimeHandler .sendEmptyMessageDelayed(MSG_UPDATE_TIME,delayMs); } break; } } }; /*receivertoupd

7、atethetimezone*/ finalBroadcastReceivermTimeZoneReceiver=newBroadcastReceiver(){ @Override publicvoidonReceive(Contextcontext,Intentintent){ mTime.clear(intent.getStringExtra("time-zone")); mTime.setToNow(); } }; /*servicemethods(seeothersections)*/ ... }初始化表盘元素在你为bitmap资源,

8、paint对象类型,以及其他你每次重绘表盘都需要复用的元素声明了成员变量后,在系统加载你的service时初始化它们。只需要初始化一次这些元素并复用他

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。