0

如此处所述(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)使用正常活动制作表盘,是否正确?

4

2 回答 2

6

在 WatchFaceService 的 onCreateEngine() 中,获取充气机:

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 上不存在。显然,谷歌没有预料到开发者会想要在表盘上显示时钟!

于 2015-01-04T02:59:06.007 回答
1

没错,您必须使用 Canvas 或 OpenGL。您提供的链接解释了适用于 5.0 之前版本的旧解决方法。现在,您必须使用新的 API。

于 2015-01-01T12:38:47.590 回答