Android Wear 表盘的中心查找问题
Problems Finding Center of Android Wear Watchface
我找遍了,但没有任何效果。每次我尝试为我的表盘找到屏幕的中心时,它总是比中心略高,并且在屏幕的最右侧(这与 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
据我快速浏览您的资料可以看出,您已经计算出 mTextXOffset
和 mTextYOffset
但不要将其用于绘图调用,因此文本原点位于你有问题的屏幕截图而不是文本中心。
将 centerX
和 centerY
调整为 mTextXOffset
和 mTextYOffset
应该可以解决问题。
如果您使用中心点绘制文本,您可以使用
mTextPaint.setTextAlign(Paint.Align.CENTER);
将从中心绘制。否则 x 坐标表示您正在绘制的文本的左侧。
我找遍了,但没有任何效果。每次我尝试为我的表盘找到屏幕的中心时,它总是比中心略高,并且在屏幕的最右侧(这与 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
据我快速浏览您的资料可以看出,您已经计算出 mTextXOffset
和 mTextYOffset
但不要将其用于绘图调用,因此文本原点位于你有问题的屏幕截图而不是文本中心。
将 centerX
和 centerY
调整为 mTextXOffset
和 mTextYOffset
应该可以解决问题。
如果您使用中心点绘制文本,您可以使用
mTextPaint.setTextAlign(Paint.Align.CENTER);
将从中心绘制。否则 x 坐标表示您正在绘制的文本的左侧。