寻找Android Wear Watchface中心的问题

时间:2016-12-01 09:18:27

标签: android wear-os watch-face-api

Screenshot after my code was finished enter image description here

我看了一遍,但没有任何效果。每当我尝试为我的表盘找到屏幕的中心时,它总是略高于中心,并且位于屏幕的最右侧(这与Android Studio的原始模板所具有的问题不同,其中表盘略微上升,一直到屏幕的最左侧)。我能做错什么?

(左侧的第一个截图:我的问题。第二个截图:来自Android Studio的Android Wear模板的原始形式)

@Override
    public void onDraw(Canvas canvas, Rect bounds) {
        if (isInAmbientMode()) {canvas.drawColor(Color.BLACK);
        }
        else {
            canvas.drawRect(0, 0, bounds.width(), bounds.height(), mBackgroundPaint);
        }

        // Draw H:MM in ambient mode or H:MM:SS in interactive mode.
        long now = System.currentTimeMillis();
        mCalendar.setTimeInMillis(now);
        int width = bounds.width();
        int height = bounds.height();
        float centerX = width / 2f;
        float centerY = height / 2f;

        String text = mAmbient
                ? String.format("%d:%02d", mCalendar.get(Calendar.HOUR),
                mCalendar.get(Calendar.MINUTE))
                : String.format("%d:%02d", mCalendar.get(Calendar.HOUR),
                mCalendar.get(Calendar.MINUTE));
        canvas.drawText(text, centerX, centerY, mTextPaint);
    }

可以找到完整代码here

2 个答案:

答案 0 :(得分:3)

据我所知,您可以通过快速查看来源来计算mTextXOffsetmTextYOffset,但不要将其用于绘制调用,因此文本来源位于你有问题的截图而不是文本中心。

centerXcenterY调整mTextXOffsetmTextYOffset应该可以解决问题。

答案 1 :(得分:0)

如果您使用中心点绘制文字,可以使用

 mTextPaint.setTextAlign(Paint.Align.CENTER);

将从中心抽取。否则,x coordinte表示您正在绘制的文本的左侧。