programing

아이콘에 대한 Mipmap 그리기 표

stoneblock 2023. 6. 18. 10:11

아이콘에 대한 Mipmap 그리기 표

4 Bean)로 Android 4.3 (Jelly Bean)을 할 수 있게 .res/mipmap폴더에 "mipmap" 이미지를 저장할 수 있습니다.

예를 들어 Android용 Chrome은 일반 폴더 대신 이러한 폴더에 아이콘을 저장합니다.res/drawable폴더.

이러한 밉맵 이미지는 다른 익숙한 그리기 가능 이미지와 어떻게 다릅니까?

내 매니페스트에서 우리는 다음을 사용합니다.@mipmap/ 자정 신 "@drawable/리소스 폴더 이름을 지정하면 다음과 같습니다.

<activity
    android:name=".MipmapDemp"
    android:icon="@mipmap/ic_launcher" />

참조:

Android 4.3 API 문서에는 다음과 같은 내용이 있습니다.

Mipmap을 비트맵 또는 그리기 가능한 소스로 사용하면 고품질 이미지와 다양한 이미지 크기를 제공할 수 있으며 애니메이션 중 이미지 크기가 조정될 것으로 예상되는 경우 특히 유용합니다.

Android 4.2(API 레벨 17)는 비트맵 클래스에서 mipmap에 대한 지원을 추가했습니다. 사용자가 mipmap 소스를 제공하고 setHasMipMap()을 활성화하면 Android가 비트맵의 mip 이미지를 스왑합니다.이제 Android 4.3에서는 Mipmap 자산을 제공하고 비트맵 리소스 파일에서 Android:mipMap 특성을 설정하거나 hasMipMap()을 호출하여 BitmapDrawable 개체에 대한 Mipmap도 활성화할 수 있습니다.

이해하는 데 도움이 될 만한 것은 아무것도 보이지 않습니다.


XML 비트맵 리소스에 다음이 있습니다.android:mipMap속성:

부울.Mipmap 힌트를 활성화하거나 비활성화합니다.자세한 내용은 setHasMipMap()을 참조하십시오.기본값은 false입니다.

이것은 런처 아이콘에는 적용되지 않습니다.


이 질문은 Google Groups(리소스 이름 "mipmap"목적!)에서 제기되었으며, Romain Guy는 다음과 같이 대답했습니다.

일반적으로 계산되는 더 큰 해상도의 이미지를 제공하는 것이 유용합니다(예: mdpi 장치에서 Launcher는 더 큰 hdpi 아이콘이 큰 앱 바로 가기를 원할 수 있습니다).

저는 이것이 거의 이치에 맞는 것처럼 느껴지지만, 완전히는 아닙니다.

저는 여전히 Randy Sugiano의 후속 조치를 따르고 싶습니다.

이것의 장점은 무엇입니까?더 나은 런처 아이콘을 위해 밉맵을 사용하는 방법에 대한 가이드가 있습니까?


물론 위키백과에는 1983년에 발명된 오래된 기술인 "Mipmap" 페이지가 있는데, 현재의 안드로이드 구현과는 잘 관련이 없습니다.


요즘 우리는 모든아이콘을 폴더에 저장해야 하며, 이러한 밉맵 이미지에 대한 지침은 무엇입니까?


업데이트 #1

여기 그것을 조금 설명하려는 블로그 게시물이 있습니다.

하지만 그 블로그 게시물에 사용된 이미지는 많은 로고가 있는 하나의 파일처럼 보이는 것을 보여줍니다.이것은 크롬의 mipmap 폴더에서 볼 수 있는 것이 아닙니다.

크롬의mipmap-hdpi폴더에는 세 개의 이미지가 있습니다.하나는 크롬 로고입니다.

Chrome mipmap-hdpi icon.png

이상하게도 제가 예상했던 48x48이 아닌 72x72입니다.

아마도 이것이 전부일 것입니다. 우리는 단지 mipmap 폴더에 더 큰 아이콘을 유지하면 됩니까?


업데이트 #2

23일 은 2014년 10월 23일 Android Developers 를 다시 합니다.mipmap응용 프로그램 아이콘의 폴더:

Nexus 6 화면 밀도에 대해 이야기할 때 저자는 다음과 같이 씁니다.

앱 아이콘은 장치의 현재 밀도와 다른 해상도로 사용되므로 Mipmap 폴더(그릴 수 있는 폴더가 아님)에 배치하는 것이 가장 좋습니다.예를 들어 xxhdpi 디바이스의 시작 프로그램에서 xxhdpi 앱 아이콘을 사용할 수 있습니다.


업데이트 #3

는 Android Studio를 .ic_launcher.pngmipmap...drawable...이클립스가 폴더를 만드는 데 사용한 폴더입니다.


Mipmap에는 두 가지 용도가 있습니다.

  1. 밀도별 APK를 작성할 때 실행기 아이콘에 사용합니다.일부 개발자들은 APK 크기를 줄이기 위해 모든 밀도에 대해 별도의 APK를 구축합니다.그러나 일부 런처(일부 장치와 함께 제공되거나 Play Store에서 사용 가능)는 표준 48dp보다 큰 아이콘 크기를 사용합니다.런처에서는 getDrawableForDensity를 사용하고 필요한 경우 위쪽이 아닌 아래쪽으로 축소하므로 아이콘의 품질이 높습니다.예를 들어 hdpi 태블릿에서 시작 프로그램이 xhdpi 아이콘을 로드할 수 있습니다.런처 아이콘을 mipmap-xhdpi 디렉토리에 배치하면 hdpi 디바이스용 APK를 구축할 때 그리기 가능한-xhdpi 디렉토리처럼 제거되지 않습니다.모든 장치에 대해 단일 APK를 구축하는 경우 런처에서 원하는 밀도의 그리기 가능한 리소스에 액세스할 수 있기 때문에 이는 그다지 중요하지 않습니다.

  2. 4.3의 실제 mipmap API.저는 이것을 사용해 본 적이 없고 익숙하지 않습니다.Android 오픈 소스 프로젝트 런처에서 사용하지 않으며 다른 런처에서 사용하는 것을 알지 못합니다.

구글은 이 모든 답변 이후 그들의 문서를 업데이트한 것 같으니, 이것이 미래에 다른 사람에게 도움이 되기를 바랍니다:) 새로운 (새로운) 프로젝트를 만드는 동안 저 자신이 이 질문을 접했습니다.

TL;DR: dp별 리소스 최적화의 일부로 드로잉 가능성이 있습니다.Mipmap은 제거되지 않습니다.

다른 장치의 다른 홈 스크린 런처 앱은 다양한 해상도로 앱 런처 아이콘을 표시합니다.앱 리소스 최적화 기술이 사용되지 않는 화면 밀도에 대한 리소스를 제거하면 실행기 앱이 표시를 위해 해상도가 낮은 아이콘을 상향 조정해야 하기 때문에 실행기 아이콘이 흐릿하게 보일 수 있습니다.이러한 문제를 은 이러디이방앱면서에를 .mipmap/시작 프로그램 아이콘에 대한 리소스 폴더.Android 시스템은 밀도 스트리핑에 관계없이 이러한 리소스를 보존하고 실행 프로그램이 디스플레이에 가장 적합한 해상도의 아이콘을 선택할 수 있도록 보장합니다.

(http://developer.android.com/tools/projects/index.html#mipmap) 에서)

이러한 밉맵 이미지는 다른 익숙한 그리기 가능 이미지와 어떻게 다릅니까?

이것은 차이를 설명하기 위해 노력하는 저의 2센트입니다.Android에서 이미지 작업을 할 때 처리하는 두 가지 경우가 있습니다.

  1. 장치 밀도에 맞는 이미지를 로드하고 실제 크기를 변경하지 않고 "있는 그대로" 사용하려고 합니다.이런 경우에는 드로잉을 사용해야 하며 Android가 가장 적합한 이미지를 제공합니다.

  2. 장치 밀도에 맞는 이미지를 로드하려는 경우 이 이미지는 크기가 조정되거나 축소됩니다.예를 들어, 더 큰 시작 프로그램 아이콘을 표시하거나 애니메이션을 사용하여 이미지 크기를 늘릴 때 필요합니다.이러한 경우 최상의 이미지 품질을 보장하려면 이미지를 mipmap 폴더에 넣어야 합니다.Android는 이미지를 확대하는 대신 고밀도 버킷에서 이미지를 수집하려고 합니다.이렇게 하면 이미지의 선명도(품질)가 증가합니다.

따라서 이미지를 넣을 위치를 결정하는 경험칙은 다음과 같습니다.

  • 시작 프로그램 아이콘은 항상 mipmap 폴더에 들어갑니다.
  • 종종 스케일 업(또는 극도로 스케일 다운)되고 품질이 앱에 중요한 이미지도 mipmap 폴더에 들어갑니다.
  • 다른 모든 이미지는 일반적으로 그리기 가능합니다.

안드로이드가 4.3에서 구현한 밉맵은 위키백과 기사에서 설명한 1983년의 기술과 정확히 일치합니다.

Mipmap 세트의 각 비트맵 이미지는 주 텍스처의 축소된 크기의 복제품이지만, 특정 수준의 상세도를 가집니다.보기가 전체 세부 정보를 렌더링하기에 충분할 때는 기본 텍스처가 계속 사용되지만, 텍스처를 멀리서 보거나 작은 크기로 볼 때 렌더러는 적합한 Mipmap 이미지(...)로 전환됩니다.

이것은 3D 그래픽 기술로 설명되지만("멀리서 보는 것"이라고 언급되어 있음), 2D에도 똑같이 적용됩니다("그림은 더 작은 공간", 즉 "다운스케일링"으로 번역됨).

예를 , 구적인특 Android 예들어를특, 배그려보진기이경히정체특보(기▁with▁(▁for▁android,▁a그, 배이려진▁a,▁view,in▁you히able▁imagine경▁have▁example▁drawground,BitmapDrawable의 0합니다. 이제 애니메이션을 사용하여 원래 크기의 0.15로 크기를 조정합니다.일반적으로 각 프레임에 대한 배경 비트맵의 축소가 필요합니다.그러나 이러한 "극단적인" 다운스케일링은 시각적 아티팩트를 생성할 수 있습니다.

그러나 Mipmap을 제공할 수 있습니다. 즉, 이미지가 몇 가지 특정 척도(예: 1.0, 0.5 및 0.25)에 대해 이미 렌더링되었음을 의미합니다.애니메이션이 원래의 1.0 크기 이미지를 계속 축소하는 대신 0.5 임계값을 "넘길" 때마다 0.5 이미지로 전환되고 축소되므로 더 나은 결과를 제공합니다.애니메이션이 계속되는 동안 계속됩니다.

이것은 약간 이론적인 것입니다. 실제로 렌더러가 하기 때문입니다.비트맵 클래스의 소스에 따르면, 그것은 힌트일 뿐이며 렌더러는 그것을 존중하거나 존중하지 않을 수 있습니다.

/**
 * Set a hint for the renderer responsible for drawing this bitmap
 * indicating that it should attempt to use mipmaps when this bitmap
 * is drawn scaled down.
 *
 * If you know that you are going to draw this bitmap at less than
 * 50% of its original size, you may be able to obtain a higher
 * quality by turning this property on.
 * 
 * Note that if the renderer respects this hint it might have to
 * allocate extra memory to hold the mipmap levels for this bitmap.
 *
 * This property is only a suggestion that can be ignored by the
 * renderer. It is not guaranteed to have any effect.
 *
 * @param hasMipMap indicates whether the renderer should attempt
 *                  to use mipmaps
 *
 * @see #hasMipMap()
 */
public final void setHasMipMap(boolean hasMipMap) {
    nativeSetHasMipMap(mNativeBitmap, hasMipMap);
}

하지만 왜 이것이 애플리케이션 아이콘에 특히 적합한지는 잘 모르겠습니다.런처 GEL)는 더 크게 "한더 하지만, 태와 Android일예런처부는한을즉더기위크높만게하지하요시표이아해일합청이다메는수니반야어사되행커메여하용니일즘니커즘반블콘도을은더밀의릿▁although▁"▁(을즉한"▁density▁the,▁icon▁gel▁to▁usingonei▁this▁done▁mechanism와▁higher▁regular),는일합▁(▁an▁tablets▁android▁itcherse▁laun▁on사▁is메수다일메drawable-xxxhdpi &c)

제가 다른 스레드에서 언급한 한 가지 지적할 가치가 있는 것은 만약 여러분이 다른 밀도를 위해 다른 버전의 앱을 구축하고 있다면, "mipmap" 리소스 디렉터리에 대해 알아야 합니다.이는 서로 다른 apk 대상을 생성할 때 밀도 스트리핑에 참여하지 않는다는 점을 제외하면 "드로잉 가능한" 리소스와 정확히 유사합니다.

https://plus.google.com/105051985738280261832/posts/QTA9McYan1L

알림 아이콘에 적합한 유형을 결정하기 위해 이 항목에 대한 명확한 답변을 찾고 있었기 때문에 이 항목에 명확한 설명을 추가하려고 합니다.http://developer.android.com/tools/help/image-asset-studio.html#saving 에서 왔습니다.

참고: 시작 프로그램 아이콘 파일은 다른 아이콘의 파일과 다른 위치에 있습니다.mipmap/폴더에 있습니다.다른 모든 아이콘 파일은 프로젝트의 그리기 가능한 폴더에 있습니다.

Android에서 이미지 작업을 할 때 처리하는 두 가지 경우가 있습니다.

  1. 장치 밀도에 맞는 이미지를 로드하고 실제 크기를 변경하지 않고 "있는 그대로" 사용하려고 합니다.이런 경우에는 드로잉을 사용해야 하며 Android가 가장 적합한 이미지를 제공합니다.
  2. 장치 밀도에 맞는 이미지를 로드하려는 경우 이 이미지는 크기가 조정되거나 축소됩니다.예를 들어, 더 큰 시작 프로그램 아이콘을 표시하거나 애니메이션을 사용하여 이미지 크기를 늘릴 때 필요합니다.이러한 경우 최상의 이미지 품질을 보장하려면 이미지를 mipmap 폴더에 넣어야 합니다.Android는 이미지를 확대하는 대신 고밀도 버킷에서 이미지를 수집하려고 합니다.

그렇게

따라서 이미지를 넣을 위치를 결정하는 경험칙은 다음과 같습니다.

  1. 시작 프로그램 아이콘은 항상 mipmap 폴더에 들어갑니다.

  2. 종종 스케일 업(또는 극도로 스케일 다운)되고 품질이 앱에 중요한 이미지도 mipmap 폴더에 들어갑니다.

  3. 다른 모든 이미지는 일반적으로 그리기 가능합니다.

기사의 인용문.

다른 밀도에 대해 별도의 앱을 구축할 때 다른 밀도에 대해 그릴 수 있는 폴더가 벗겨집니다.이렇게 하면 밀도가 높은 시작 프로그램 아이콘을 사용하는 장치에서 아이콘이 흐릿하게 나타납니다.Mipmap 폴더는 제거되지 않으므로 시작 프로그램 아이콘을 포함하는 데 사용하는 것이 좋습니다.

서로 다른 밀도에 대해 별도의 APK를 구축하면 특정 밀도의 APK에 대해 다른 밀도에 대해 그리기 가능한 폴더가 벗겨집니다.이렇게 하면 밀도가 높은 시작 프로그램 아이콘을 사용하는 장치에서 아이콘이 흐릿하게 나타납니다.Mipmap 폴더는 제거되지 않으므로 시작 프로그램 아이콘을 포함하는 데 사용하는 것이 좋습니다.

res/
mipmap-mdpi/ic_launcher.png (48x48 pixels)
mipmap-hdpi/ic_launcher.png (72x72)
mipmap-xhdpi/ic_launcher.png (96x96)
mipmap-xxhdpi/ic_launcher.png (144x144)
mipmap-xxxhdpi/ic_launcher.png (192x192)

런처 앱 아이콘에 대한 MipMap

http://android-developers.blogspot.co.uk/2014/10/getting-your-apps-ready-for-nexus-6-and.html

https://androidbycode.wordpress.com/2015/02/14/goodbye-launcher-drawables-hello-mipmaps/

Android 자산 패키지화 도구인 HDPI와 같은 목표 화면 해상도를 위한 APK를 구축하면,AAPT는 당신이 필요로 하지 않는 다른 해상도를 위해 그림을 그릴 수 있습니다.그러나 Mipmap 폴더에 있으면 목표 해상도에 관계없이 이러한 자산은 APK에 유지됩니다.

Mipmap에 대한 이해는 다음과 같습니다.

이미지를 그려야 하는 경우 화면 크기가 해상도에 따라 일부 스케일링이 필요합니다.

로우엔드 휴대폰에 적합한 이미지가 있다면 10인치 태블릿 크기로 확장할 때 실제로 존재하지 않는 픽셀을 "발명"해야 합니다.이 작업은 일부 보간 알고리즘을 사용하여 수행됩니다.더 많은 양의 픽셀을 발명할수록 프로세스가 더 오래 걸리고 품질이 저하되기 시작합니다.시간이 오래 걸리는 더 복잡한 알고리즘(예: 주변 픽셀의 평균 대 가장 가까운 픽셀 복사)을 사용하면 최상의 품질을 얻을 수 있습니다.

발명해야 하는 픽셀 수를 줄이기 위해 Mipmap을 사용하여 동일한 이미지의 다양한 크기/r 해상도를 제공하면 시스템이 렌더링해야 하는 해상도에 가장 가까운 이미지를 선택하고 거기서 스케일링을 수행합니다.이렇게 하면 좋은 품질의 이미지를 제공하기 위해 이러한 픽셀을 계산하는 데 사용할 리소스를 절약하는 발명된 픽셀 수를 줄일 수 있습니다.

이미지 스케일링 시 libgdx의 성능 문제를 설명하는 기사에서 이에 대해 읽었습니다.

http://www.badlogicgames.com/wordpress/ ?p=1403

언급URL : https://stackoverflow.com/questions/23935810/mipmap-drawables-for-icons