Programing

-anydpi와 -nodpi의 차이점은 무엇입니까?

crosscheck 2020. 8. 21. 07:08
반응형

-anydpi와 -nodpi의 차이점은 무엇입니까?


Android Studio 1.5.0에서 Vector Asset 마법사를 사용하는 경우 해당 마법사를 사용하여 가져온 모든 벡터 드로어 블 XML은 res/drawable/.

그러나 build/디렉토리와 결과 APK는 해당 XML 파일이 res/drawable-anydpi-v21/리소스 디렉토리 로 이동되었음을 보여줍니다 . -v21부분은 VectorDrawableAPI 레벨 21 이상에서만 지원 되므로 의미 가 있습니다. 그러나 -anydpi문서화되지 않은 것 같습니다. -nodpi원래 가져 오기 대상과 빌드 시스템이 이동하도록 선택한 위치 모두에 대해 예상했을 것입니다.

누가 -anydpi의미하고 그 관계가 무엇인지에 대한 공식적인 진술을 본 사람 -nodpi있습니까? 일부 코드 주석이 암시하는 것만이 아니라 실용적인 효과를 찾고 있습니다.


Nodpi

이들은 밀도에 독립적 인 리소스입니다. 시스템은 현재 화면의 밀도에 관계없이이 한정자로 태그가 지정된 리소스를 확장하지 않습니다.

예를 들면 :

  • drawable- nodpi /dot.png

점은 xxhdpi에서는 작게 표시되고 ldpi에서는 크게 표시됩니다.

그러나 리소스 확인자는 존재하는 경우 특정 한정자와 일치합니다.

예를 들어

  • drawable- hdpi에 /eg.png
  • drawable- nodpi -v21 / eg.xml

Lollipop (API 21) hdpi 장치에서는 비트 맵 이 사용됩니다.

Lollipop (API 21) xhdpi 장치에서는 벡터가 사용됩니다.

anydpi

이러한 리소스는 모든 dpi에서 우선합니다.

예를 들어

  • drawable- hdpi에 /eg.png
  • 드로어 블 -anydpi -v21 / eg.xml

Lollipop (API 21) hdpi 장치에서는 벡터 가 사용됩니다.

Lollipop (API 21) xhdpi 장치에서는 벡터가 사용됩니다.

참고

참고 : anydpi는 Ic3288d0236fe0bff20bb1599aba2582c25b0db32 변경 에 추가되었습니다 .


소스 코드는 다음과 같은 의견 (라인 639)를 포함 :

/**
 * Value for {@link #densityDpi} for resources that scale to any density (vector drawables).
 * {@hide}
 */
public static final int DENSITY_DPI_ANY = 0xfffe;

/**
 * Value for {@link #densityDpi} for resources that are not meant to be scaled.
 * {@hide}
 */
public static final int DENSITY_DPI_NONE = 0xffff;

이것이 혼란을 없애기를 바랍니다.


nodpi: 모든 밀도에 대한 리소스입니다. 이들은 밀도에 독립적 인 리소스입니다. 시스템은 현재 화면의 밀도에 관계없이이 한정자로 태그가 지정된 리소스를 확장하지 않습니다.

anydpi:이 한정자는 모든 화면 밀도와 일치하며 다른 한정자보다 우선합니다. 이것은 벡터 드로어 블에 유용합니다. API 레벨 21에 추가되었습니다.


나는 모든 것에 drawable-nodpi를 사용하고 큰 그래픽을 많이 가지고 있습니다. 그래픽 '확장'의 문서화되지 않은 결과 중 하나는 메모리 사용이 기하 급수적으로 증가한다는 것입니다. 따라서 '드로어 블'에 100M 그래픽이있는 경우 사용자 장치의 해상도에 따라 400M 또는 1.6G로 조정됩니다. 그리고 장치 해상도는 계속 올라갑니다. 물론 이러한 확장은 실제로 그래픽의 '선명도'를 증가시키지 않습니다. 그리기 작업은 화면 크기와 관련하여 그래픽이 얼마나 커야하는지 지시 할 수 있으며 여러 그리기 폴더로 앱을 부 풀릴 필요가 없습니다.

참고 URL : https://stackoverflow.com/questions/34156957/what-is-the-difference-between-anydpi-and-nodpi

반응형