getDimension(), getDimensionPixelSize()와 getDimensionPixelOffset()의 차이
안드로이드 코드에서res 자원 가져오기
dimens.xml
파일에 정의된 치수 크기는 다음과 같은 세 가지 방법으로 지정할 수 있습니다.• getDimension
•getDimensionPixelOffset
•getDimensionPixelSize
리소스의 정의:
<dimen name="dp_20">20dpdimen> <dimen name="sp_20">20spdimen> <dimen name="dp_20_4">20.4dpdimen> <dimen name="dp_20_5">20.5dpdimen> <dimen name="px_20">20pxdimen> <dimen name="px_20_4">20.4pxdimen> <dimen name="px_20_5">20.5pxdimen>
테스트의 기본 코드는 다음과 같습니다. 내 실제 density는 3입니다.Log.d(TAG, "-------- dimens.xml 20dp -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.dp_20) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.dp_20) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.dp_20) + ""); Log.d(TAG, "-------- dimens.xml 20sp -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.sp_20) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.sp_20) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.sp_20) + ""); Log.d(TAG, "-------- dimens.xml 20.4dp -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.dp_20_4) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.dp_20_4) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.dp_20_4) + ""); Log.d(TAG, "-------- dimens.xml 20.5dp -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.dp_20_5) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.dp_20_5) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.dp_20_5) + ""); Log.d(TAG, "-------- dimens.xml 20.4px -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.px_20_4) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.px_20_4) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.px_20_4) + ""); Log.d(TAG, "-------- dimens.xml 20.5px -------------"); Log.d(TAG, "getDimension:"+getResources().getDimension(R.dimen.px_20_5) + ""); Log.d(TAG, "getDimensionPixelOffset:"+getResources().getDimensionPixelOffset(R.dimen.px_20_5) + ""); Log.d(TAG, "getDimensionPixelSize:"+getResources().getDimensionPixelSize(R.dimen.px_20_5) + "");
인쇄 결과: 04-13 14:57: 42.047 D/MainActivity: ------- 획득한 dimens.xml의 값이 20dp인 경우 -----------
04-13 14:57:42.047 D/MainActivity: getDimension:60.0
04-13 14:57:42.047 D/MainActivity: getDimensionPixelSize:60
04-13 14:57:42.047 D/MainActivity: getDimensionPixelOffset:60
04-13 14:57: 42.047 D/MainActivity: ------- 획득한 dimens.xml의 값이 20sp인 경우 -----------
04-13 14:57:42.047 D/MainActivity: getDimension:60.0
04-13 14:57:42.047 D/MainActivity: getDimensionPixelOffset:60
04-13 14:57:42.047 D/MainActivity: getDimensionPixelSize:60
04-13 14:57: 42.047 D/MainActivity: ------- 획득한 dimens.xml의 값이 20.4dp인 경우 -----------
04-13 14:57:42.047 D/MainActivity: getDimension:61.19998
04-13 14:57:42.047 D/MainActivity: getDimensionPixelOffset:61
04-13 14:57:42.048 D/MainActivity: getDimensionPixelSize:61
04-13 14:57: 42.048 D/MainActivity: ------- 획득한 dimens.xml의 값이 20.5dp인 경우 -----------
04-13 14:57:42.048 D/MainActivity: getDimension:61.5
04-13 14:57:42.048 D/MainActivity: getDimensionPixelOffset:61
04-13 14:57:42.048 D/MainActivity: getDimensionPixelSize:62
04-13 14:57: 42.048 D/MainActivity: ------- 획득한 dimens.xml의 값이 20.4px인 경우 -----------
04-13 14:57:42.048 D/MainActivity: getDimension:20.399994
04-13 14:57:42.048 D/MainActivity: getDimensionPixelOffset:20
04-13 14:57:42.048 D/MainActivity: getDimensionPixelSize:20
04-13 14:57: 42.048 D/MainActivity: ------- 획득한 dimens.xml의 값이 20.5px인 경우 -----------
04-13 14:57:42.048 D/MainActivity: getDimension:20.5
04-13 14:57:42.048 D/MainActivity: getDimensionPixelOffset:20
04-13 14:57:42.048 D/MainActivity: getDimensionPixelSize:21
이상의 테스트 결과에 따라 결론을 얻습니다.
1.getDimension 반환값은float형이고 getDimensionPixelOffset, getDimensionPixelSize는 정형입니다.
2. 만약에 Resources에서dimen 속성 값의 단위가 dp 또는 sp라면 방법의 반환 값은 모두 속성 값*density이고 제4조의 다른 방법에 따라 (속성 값*density)에 대해 서로 다른 처리를 했다.
3..만약에 Resources에서dimen 속성 값의 단위가 px일 때 방법의 반환 값은 모두 다음과 같다. 속성 값은density를 곱하지 않고 4조의 다른 방법에 따라 속성 값을 서로 다르게 처리한다.
4. getDimension 반환 값은 정확한 값이고, getDimensionPixelOffset 반환 값은 작은 숫자를 직접 버리는 정수이며, getDimensionPixelSize는 반올림하는 정수이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.