developer tip

Paint.setTextSize ()의 단위 설정 방법

copycodes 2020. 12. 28. 08:25
반응형

Paint.setTextSize ()의 단위 설정 방법


단위를 변경할 수 Paint.setTextSize()있습니까? 내가 아는 한 픽셀이지만 여러 화면 지원을 위해 DIP에서 텍스트 크기를 설정하는 것을 좋아합니다.


다음과 같이 변환하십시오.

// The gesture threshold expressed in dip
private static final float GESTURE_THRESHOLD_DIP = 16.0f;

// Convert the dips to pixels
final float scale = getContext().getResources().getDisplayMetrics().density;
mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels

여기에서 http://developer.android.com/guide/practices/screens_support.html#dips-pels


이 주제가 오래되었고 이미 답변을 받았지만이 코드도 제안하고 싶습니다.

int MY_DIP_VALUE = 5; //5dp

int pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                              MY_DIP_VALUE, getResources().getDisplayMetrics());

허용되는 대답은 텍스트 크기를 설정하는 것이 아니라 제스처에 대한 것입니다. 가장 근접하다 (이 기입시) 답 선정되지만 문서의 사용을 권장 sp보다는 dp화면 밀도에 대한 스케일링 인 이외에 (로하기 때문에 dp가치가있다), sp또한 사용자가 원하는 폰트 크기에 따라 스케일링된다.

int코드에서

int spSize = 17;
float scaledSizeInPixels = spSize * getResources().getDisplayMetrics().scaledDensity;
mTextPaint.setTextSize(scaledSizeInPixels);

또는

int spSize = 17;
float scaledSizeInPixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
        spSize, getResources().getDisplayMetrics());
mTextPaint.setTextSize(scaledSizeInPixels);

자원에서

또는 리소스에 sp또는 dp가치 가있는 경우 :

<resources>
    <dimen name="fontSize">17sp</dimen>
</resources>

float scaledSizeInPixels = getResources().getDimensionPixelSize(R.dimen.fontSize);
mTextPaint.setTextSize(scaledSizeInPixels);

기타 링크


그리고 디스플레이 메트릭을 고려하여 dp-s를 px-el로 변환하는 더 짧은 방법이 있습니다.

https://developer.android.com/reference/android/content/res/Resources.html#getDimensionPixelSize(int)


Paint 개체를 사용하여 캔버스에 텍스트를 그리는 경우 캔버스에서 크기 조정을 처리하도록 할 수 있습니다.

호출 할 때 Canvas.drawText()텍스트 크기는 먼저 전달 된 Paint객체에 의해 결정되며을 통해 설정할 수 있습니다 Paint.setTextSize(). Canvas사용하여 찾을 수있는 캔버스 밀도 따라 텍스트 크기가 자동으로 조정됩니다 Canvas.getDensity().

Canvas에 그릴 페인트 개체의 텍스트 크기를 설정할 때 dp또는 단위 값으로 작업 sp하고 Canvas가 크기 조정을 처리하도록합니다.

참조 URL : https://stackoverflow.com/questions/3061930/how-to-set-unit-for-paint-settextsize

반응형