2015-01-29 2 views
1

나는 계기판으로 구성된 응용 프로그램을 작성 중입니다. here에서 다운로드했는데 게이지 뷰 내부에 텍스트를 그려야합니다 (게이지 뷰의 중심에 있음) 어떻게하면 게이지 뷰 안에 텍스트를 그려 도움이 될 수 있습니까? 스택 오버 플로우에서android에서 캔버스에 텍스트를 그리는 방법

내 친구 후

에게 대답 나는이처럼했지만이 작품은 vipluv를 들어

private void drawGauge() 
    { 
     if (null != mBackground) 
     { 
      mBackground.recycle(); 
     } 

     /*--For Semi circle put getHeight()/2--*/ 
     mBackground = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888); 
     newBitmap = Bitmap.createBitmap(mBackground.getWidth(), mBackground.getHeight(), Config.ARGB_8888); 
     Canvas newCanvas = new Canvas(newBitmap); 
     final Canvas canvas = new Canvas(mBackground); 
     final float scale = Math.min(getWidth(), getHeight()); 
     canvas.scale(scale, scale); 
     canvas.translate((scale == getHeight()) ? ((getWidth() - scale)/2)/scale : 0,(scale == getWidth()) ? ((getHeight() - scale)/2)/scale : 0); 

     Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paintText.setColor(Color.WHITE); 
     paintText.setTextSize(50); 
     paintText.setTextAlign(Align.CENTER); 
     paintText.setStyle(Style.FILL); 
     Rect rectText = new Rect(); 
     paintText.getTextBounds(captionString, 0, captionString.length(), rectText); 
     newCanvas.drawText(captionString, 0, rectText.height(), paintText); 


     //canvas.drawText("MedeQuip", 200, 500, shadowpaint); 
     //drawRim(canvas); 
     //drawFace(canvas); 

작동 확인하시기 바랍니다하지 않았다 : 단위)의 onDraw에서

protected void onDraw(final Canvas canvas) { 
     drawBackground(canvas); 
     final float scale = Math.min(getWidth(), getHeight()); 
     canvas.scale(scale, scale); 
     canvas.translate((scale == getHeight()) ? ((getWidth() - scale)/2)/scale : 0, (scale == getWidth()) ? ((getHeight() - scale)/2)/scale : 0); 

     if (mShowNeedle) { 
      drawNeedle(canvas); 
     } 

     if (mShowText) { 
      drawText(canvas); 
     } 

     Paint paintText = new Paint(Paint.ANTI_ALIAS_FLAG); 
     paintText.setColor(Color.WHITE); 
     paintText.setTextSize(150); 
     paintText.setTextAlign(Align.CENTER); 
     paintText.setStyle(Style.FILL); 
     Rect rectText = new Rect(); 
     paintText.getTextBounds(captionString, 0, captionString.length(), rectText); 
     canvas.drawText(captionString, rectText.width(), rectText.height(), paintText); 

     computeCurrentValue(); 
    } 
+0

canvas.drawText()해야합니다. – vipluv

+0

이것은 좋은 참조 일 것입니다 : https://www.youtube.com/watch?v=pCUQ_6iA_3o – CodeWalker

+0

나는 그것을했습니다. 그러나 작동하지 않습니다. @vipluv – lakshman

답변

0

(기능을 자신의 GaugeView.java 파일에서 computeCurrentValue()를 호출하기 바로 전에 canvas.drawText()를 추가하십시오.

자신의 Paint 개체를 사용하고 textsize 및 color 속성을 초기화했는지 확인하십시오.

+0

다시는 작동하지 않습니다. 당신이 말하는대로 @vipluv – lakshman

+0

확실합니까? textsize를 올바르게 설정 했습니까? 내 경험상 텍스트는 때로는 그려지지만 너무 작아 보이지 않습니다. – vipluv

+0

텍스트 크기를 50으로 설정합니다. dude @vipluv – lakshman

관련 문제