programing

픽셀을 sp로 변환

copyandpastes 2021. 1. 16. 11:02
반응형

픽셀을 sp로 변환


나는 현재의 필요 TextSizeTextViewsp단위.

그러나 getTextSize()크기를 pixels. 그래서 방법이 convert pixels to sp있습니까?


DisplayMetrics 클래스를 참조하십시오. 여기에는 densityDpi및에 대한 필드가 있습니다 scaledDensity.

사용 예 :

float sp = px / getResources().getDisplayMetrics().scaledDensity;

이것을 사용하십시오

public static float pixelsToSp(Context context, float px) {
    float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
    return px/scaledDensity;
}

이 방법이 제대로 작동하는지 테스트하려면이 스 니펫을 사용하세요.

XML

<TextView
        android:id="@+id/txtHelloWorld"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

<TextView
        android:id="@+id/txtHelloWorld2"
        android:text="@string/hello_world"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />

자바

View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView helloWorldTextView = (TextView)    rootView.findViewById(R.id.txtHelloWorld);
TextView helloWorldTextView2 = (TextView) rootView.findViewById(R.id.txtHelloWorld2);
helloWorldTextView2.setTextSize(pixelsToSp(getActivity(), helloWorldTextView.getTextSize()));

TextView의 글꼴 크기는 모두 동일해야합니다.


런타임에 조정되는 공개 필드를 보는 것이 이상하지만 작동합니다. 표준 Dpi는 160이므로 장치 Dpi가 240이라고 말하면 밀도와 배율이 모두 240 / 160 = 1.5로 표시됩니다. 픽셀과 sp 사이를 변환하는 방법입니다. px = 1.5 * sp

참조 URL : https://stackoverflow.com/questions/6263250/convert-pixels-to-sp

반응형