我到处看过了,但什么也没成功。每次我尝试为我的手表脸找到屏幕中心时,它总是略高于屏幕的中央和屏幕的最右边(这与Android Studio的原始模板存在的问题不同,Android Studio的原始模板是稍微向上的,一直到屏幕的最左边)。我做错什么了?
(左边的第一张截图:我的问题。第二个屏幕截图:来自Android的Android磨损模板的原始形式)
@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);
}
完整的代码可以找到这里
发布于 2016-12-01 03:35:43
据我所知,从您的来源快速查看,您已经计算了mTextXOffset
和mTextYOffset
,但不使用它在您的抽签调用,因此文本来源是集中在您的问题屏幕截图,而不是文本中心。
通过centerX
和mTextYOffset
来调整您的mTextXOffset
和mTextYOffset
应该可以做到这一点。
发布于 2016-12-01 08:53:19
如果使用中间点绘制文本,则可以使用
mTextPaint.setTextAlign(Paint.Align.CENTER);
它会从中间抽离。否则,x坐标表示正在绘制的文本的左侧。
https://stackoverflow.com/questions/40906657
复制相似问题