좋아요,이 말은 날 미워합니다. 내 응용 프로그램에서 계기를 그리기 위해 캔버스를 사용하고 있습니다. 또한 게이지를 가로 지르는 해쉬 마크와 가로 텍스트에 숫자를 그립니다. 이 모든 버전의 Android는 모든 버전에서 최대 4.2까지 작동합니다. 4.2에서는 한 문자 (중간 문자 인 것처럼 보임)를 텍스트로 그리기 만합니다. 예를 들어 12345를 읽는 텍스트가있는 경우 3을 쓰는 것입니다. 두 자리 숫자 인 경우 첫 번째 숫자 만 그립니다. 이 문제는 4.2 에뮬레이터와 4.2.1의 Nexus 4에서 볼 수 있습니다. 하드웨어 가속이 기본적으로 켜져 있고 일부 페인트 및 캔버스 기능에 문제가 있음을 모두 읽었습니다. drawText 호출에 대한 하드웨어 가속을 끄는 코드를 삽입했지만 도움이되지 않습니다. 나는 그와 너비와 높이가 완벽 유효 캔버스 통과DrawText는 Jelly Bean에서 문자열의 한 문자 만 드로잉합니다. 4.2
@SuppressLint("NewApi")
private void drawTitle1(Canvas canvas) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
setLayerType(View.LAYER_TYPE_SOFTWARE, titlePaint1);
canvas.drawText(title1, 0.5f, 0.72f, titlePaint1);
}
:
여기titlePaint1 = new Paint();
titlePaint1.setColor(Color.WHITE);
titlePaint1.setAntiAlias(true);
titlePaint1.setTypeface(Typeface.DEFAULT_BOLD);
titlePaint1.setTextAlign(Paint.Align.CENTER);
titlePaint1.setTextSize(0.085f);
텍스트를 그리기 위해 호출하는 방법입니다 :
여기 내 페인트 코드입니다. 그 캔버스에 그려진 다른 모든 것들은 잘 보이고 있으며, 게이지의 구성 요소를 그리기 전에 위의 것과 같은 세 가지 다른 함수 호출이 있습니다. drawText와 관련된 문제 일뿐입니다. 4.2의 변경과 관련이 있으며이 drawText 문제는 하드웨어 가속화와 관련이 없다고 생각합니다. 필자는 Google에서 캔버스 문제에 대해 4.2에 관한 몇 가지 결과를 발견 할 수 있었지만 문제는 해결되지 않았습니다. 어떻게하면이 문제를 해결하고 텍스트가 올바르게 표시되는지 알 수 있습니까?
페인트가 샘플 코드에서 일치하지 않습니다. 그게 문제일까요? – AedonEtLIRA
CENTER 텍스트 정렬을 사용하고 있습니다. 즉, 클리핑 문제 일 가능성이 있습니다. 클립을 올바르게 설정 하시겠습니까? 소프트웨어와 하드웨어 모두에서 발생한다는 사실은 코드에 문제가 있음을 나타냅니다. 두 파이프 라인은 완전히 다른 구현을 사용합니다. –
@AedonEtLIRA 코드 샘플에 일치하는 titlePaint가 없다는 것에 나쁘다. 나는 titlePaint3을 실험하고 있었지만 titlePaint1은 올바른 것이고 둘 다 코드에서 일치합니다. – ssuperz28