2016-12-01 5 views
0

Screenshot after my code was finishedenter image description here문제 찾기 센터는 시계 모드가

나는 모든 것을 보았다 입고 있지만, 아무 일 없다. 내 시계 모드의 화면 중심을 찾으려고 할 때마다 항상 화면의 중심보다 약간 높은 위치로 끝나고 화면 맨 오른쪽으로 이동합니다 (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

답변

3

지금까지 내가 말할 수있는 출처의 빠른 모양에서 이미 mTextXOffsetmTextYOffset을 계산하지만 그리기 호출에는 사용하지 마십시오. 따라서 텍스트 중심은 텍스트 센터 대신 문제가있는 스크린 샷에 집중됩니다.

트릭을 할해야 mTextXOffsetmTextYOffset하여 centerXcenterY을 조정. 당신이 중심점을 사용하여 텍스트를 그리는 경우

0

당신이 사용할 수있는 중심에서 이끌어 낼 수

mTextPaint.setTextAlign(Paint.Align.CENTER); 

. 그렇지 않으면 x coordinte는 사용자가 그리는 텍스트의 왼쪽을 나타냅니다.