【问题标题】:Problems Finding Center of Android Wear WatchfaceAndroid Wear Watchface的问题查找中心
【发布时间】:2016-12-01 09:18:27
【问题描述】:

我已经看遍了,但没有任何效果。每次我尝试为我的表盘寻找屏幕中心时,它总是比中心略高,并且在屏幕的最右侧(这与 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

【问题讨论】:

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


    【解决方案1】:

    据我快速查看您的来源可以看出,您已经计算了 mTextXOffsetmTextYOffset 但不要将其用于您的绘图调用,因此文本来源位于有问题的屏幕截图而不是文本中心。

    通过mTextXOffsetmTextYOffset 调整您的centerXcenterY 应该可以解决问题。

    【讨论】:

      【解决方案2】:

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

       mTextPaint.setTextAlign(Paint.Align.CENTER);
      

      将从中心绘制。否则,x 坐标代表您正在绘制的文本的左侧。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多