如此处所说(https://developer.android.com/training/wearables/watch-faces/service.html)绘制表盘我必须使用方法OnDraw,是吗?没有其他选择吗?
这是一个玩笑吗?没有来自xml管理的布局?没有dpi管理?没有屏幕格式管理?等等?确实
请告诉我,我错了!
PS此页面(http://www.binpress.com/tutorial/how-to-create-a-custom-android-wear-watch-face/120)使用正常活动制作表盘,是否正确?
答案 0 :(得分:6)
在WatchFaceService的onCreateEngine()中,获取inflater:
mInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
然后在你的引擎的onCreate()中,夸大你的布局:
mFrameLayout = (FrameLayout) mInflater.inflate(R.layout.main, null);
然后在onDraw(),测量,布局和绘制视图:
//Measure the view at the exact dimensions (otherwise the text won't center correctly)
int widthSpec = View.MeasureSpec.makeMeasureSpec(bounds.width(), View.MeasureSpec.EXACTLY);
int heightSpec = View.MeasureSpec.makeMeasureSpec(bounds.height(), View.MeasureSpec.EXACTLY);
mFrameLayout.measure(widthSpec, heightSpec);
//Lay the view out at the rect width and height
mFrameLayout.layout(0, 0, bounds.width(), bounds.height());
mFrameLayout.draw(canvas);
不要指望使用TextClock执行此操作。它在Android Wear上不存在。显然,Google并没有预料到开发人员会希望在表盘上显示时钟!
答案 1 :(得分:1)
你是对的,你必须使用Canvas或OpenGL。 您提供的链接解释了适用于5.0之前版本的旧解决方法。 现在,您必须使用新的API。