Android 4.3 (Jelly Bean)부터는 res/mipmap
폴더를 사용하여 “밉맵”이미지를 저장할 수 있습니다.
예를 들어 Android 용 Chrome 은 더 일반적인 res/drawable
폴더 대신이 폴더에 아이콘을 저장합니다 .
이 밉맵 이미지는 다른 친숙한 드로어 블 이미지와 어떻게 다릅니 까?
내 매니페스트 에서 리소스 폴더 이름이 지정된 @mipmap/
대신에 한정자를 사용합니다 @drawable/
.
<activity
android:name=".MipmapDemp"
android:icon="@mipmap/ic_launcher" />
참고 문헌 :
안드로이드 4.3 API를 문서는 말할 다음이있다 :
밉맵을 비트 맵 또는 드로어 블의 소스로 사용하는 것은 고품질 이미지와 다양한 이미지 스케일을 제공하는 간단한 방법으로, 애니메이션 중에 이미지의 스케일이 예상되는 경우 특히 유용합니다.
Android 4.2 (API 레벨 17)는 Bitmap 클래스에서 밉맵 지원을 추가했습니다. 밉맵 소스를 제공하고 setHasMipMap ()을 활성화하면 Android가 비트 맵의 밉 이미지를 교체합니다. 이제 Android 4.3에서는 밉맵 자산을 제공하고 비트 맵 리소스 파일에서 android : mipMap 속성을 설정하거나 hasMipMap ()을 호출하여 BitmapDrawable 객체에 밉맵을 활성화 할 수 있습니다.
나는 거기에 내가 이해하는 데 도움이되는 것을 보지 못했습니다.
XML 비트 맵 리소스 에는 다음과 같은 android:mipMap
속성이 있습니다.
부울. 밉맵 힌트를 활성화하거나 비활성화합니다. 자세한 내용은 setHasMipMap ()을 참조하십시오. 기본값은 false입니다.
내가 볼 수있는 한 실행기 아이콘에는 적용되지 않습니다.
Romain Guy가 대답 한 Google 그룹스 ( 자원 이름 “mipmap”?! ) 에 대한 질문이 제기되었습니다 .
일반적으로 계산되는 더 큰 해상도로 이미지를 제공하는 것이 좋습니다 (예를 들어 mdpi 장치에서 Launcher는 더 큰 hdpi 아이콘으로 큰 앱 바로 가기를 표시 할 수 있습니다).
나는 이것이 거의 의미가 있다고 생각하지만, 그렇지 않습니다.
나는 여전히 랜디 수기 안토의 후속 조치를 따르려고한다.
이것의 장점은 무엇입니까? 더 나은 실행기 아이콘을 위해 밉맵을 사용하는 방법에 대한 가이드가 있습니까?
물론 Wikipedia에는 ”Mipmap”에 대한 페이지가 있습니다.이 페이지 는 1983 년에 발명 된 기존 기술을 나타내며 현재 Android 구현과 관련이 없습니다.
요즈음 모든 앱 아이콘을 res/mipmap
폴더에 저장해야합니까 ? 이러한 밉맵 이미지에 대한 지침 은 무엇 입니까?
업데이트 # 1
여기에 약간의 설명을 시도하는 블로그 게시물이 있습니다.
그러나 해당 블로그 게시물에 사용 된 이미지는 로고가 많은 하나의 파일처럼 보이는 것을 보여줍니다. 이것은 Chrome의 밉맵 폴더에 표시되지 않습니다.
Chrome의 mipmap-hdpi
폴더에는 3 개의 이미지가 있습니다. 하나는 Chrome 로고입니다.
이상하게도 볼 것으로 예상되는 48×48이 아니라 72×72입니다.
아마도 이것이 전부입니다. 우리는 밉맵 폴더에 더 큰 아이콘을 유지해야합니까?
업데이트 # 2
2014 년 10 월 23 일의 Android 개발자 블로그 게시물은 mipmap
애플리케이션 아이콘에 폴더를 사용한다는 아이디어를 다시 확인합니다 .
Nexus 6 화면 밀도에 대해 이야기 할 때 저자는 다음과 같이 씁니다.
앱 아이콘은 장치의 현재 밀도와 다른 해상도에서 사용되므로 밉맵 폴더 (드로어 블 폴더가 아님)에 배치하는 것이 가장 좋습니다. 예를 들어, xxhdpi 장치의 실행기에서 xxxhdpi 앱 아이콘을 사용할 수 있습니다.
업데이트 # 3
Android Studio 는 Eclipse ic_launcher.png
에서 아이콘 을 작성하는 데 사용한 폴더가 mipmap...
아닌 폴더에 아이콘 drawable...
을 작성합니다.
답변
밉맵에는 두 가지 용도가 있습니다.
-
밀도 별 APK를 빌드 할 때 실행기 아이콘의 경우 일부 개발자는 모든 밀도에 대해 별도의 APK를 작성하여 APK 크기를 줄입니다. 그러나 일부 런처 (일부 장치와 함께 제공되거나 Play 스토어에서 사용 가능)는 표준 48dp보다 큰 아이콘 크기를 사용합니다. 실행 프로그램은 getDrawableForDensity를 사용하고 필요에 따라 확대하지 않고 축소하므로 아이콘의 품질이 우수합니다. 예를 들어 hdpi 태블릿에서 실행기는 xhdpi 아이콘을로드 할 수 있습니다. 런처 아이콘을 mipmap-xhdpi 디렉토리에 배치하면 hdpi 장치 용 APK를 빌드 할 때 drawable-xhdpi 디렉토리와 같은 방식으로 제거되지 않습니다. 모든 장치에 대해 하나의 APK를 작성하는 경우 실행기가 원하는 밀도의 드로어 블 리소스에 액세스 할 수 있으므로 실제로 중요하지 않습니다.
-
4.3의 실제 밉맵 API 나는 이것을 사용하지 않았고 그것에 익숙하지 않다. 그것은 안드로이드 오픈 소스 프로젝트 런처에서 사용되지 않으며 다른 런처를 사용하는 것을 알지 못합니다.
답변
Google 은이 모든 답변 이후 문서를 업데이트 한 것으로 보이 므로 앞으로 다른 사람에게 도움이되기를 바랍니다.
TL; DR : 드로어 블은 dp 특정 자원 최적화의 일부로 제거 될 수 있습니다. 밉맵은 제거되지 않습니다.
다른 기기의 다른 홈 화면 런처 앱은 다양한 해상도에서 앱 런처 아이콘을 보여줍니다. 앱 리소스 최적화 기술이 사용되지 않은 화면 밀도에 대한 리소스를 제거하면 런처 앱이 저해상도 아이콘을 업 스케일하여 표시하기 때문에 런처 아이콘이 흐릿하게 보일 수 있습니다. 이러한 표시 문제를 피하려면 앱
mipmap/
에서 실행기 아이콘에 리소스 폴더를 사용해야합니다 . Android 시스템은 밀도 제거와 상관없이 이러한 리소스를 유지하고 런처 앱이 디스플레이에 가장 적합한 해상도로 아이콘을 선택할 수 있도록합니다.
( http://developer.android.com/tools/projects/index.html#mipmap에서 )
답변
이 밉맵 이미지는 다른 친숙한 드로어 블 이미지와 어떻게 다릅니 까?
차이점을 설명하려는 두 센트가 있습니다. Android에서 이미지로 작업 할 때 처리하는 두 가지 경우가 있습니다.
-
장치 밀도에 대한 이미지를로드 하고 실제 크기를 변경하지 않고 “있는 그대로”사용하려고합니다 . 이 경우 드로어 블로 작업해야 하며 Android에서 가장 적합한 이미지를 제공합니다.
-
장치 밀도에 대한 이미지를로드 하려고 하지만이 이미지 가 확대 또는 축소됩니다 . 예를 들어 더 큰 런처 아이콘을 표시하거나 애니메이션을 사용하여 이미지 크기를 늘리려는 경우에 필요합니다. 이러한 경우 최상의 이미지 품질을 얻으려면 이미지를 밉맵 폴더에 넣어야 합니다. 안드로이드는 이미지를 스케일링하는 대신 고밀도 버킷에서 이미지를 픽업하려고 시도합니다. 이미지의 선명도 (품질)가 높아집니다.
따라서 이미지를 넣을 위치를 결정하는 경험 법칙은 다음과 같습니다.
- 실행기 아이콘은 항상 밉맵 폴더 로 이동 합니다.
- 종종 크기가 커지 거나 앱에서 품질이 중요한 이미지는 밉맵 폴더로 이동 합니다.
- 다른 모든 이미지 는 일반적인 드로어 블 입니다.
답변
4.3에서 안드로이드의 밉맵 구현은 Wikipedia 기사에서 설명 된 1983 년의 기술입니다. 🙂
밉맵 세트의 각 비트 맵 이미지는 기본 텍스처의 축소 된 복제본이지만 특정 수준의 세부 수준이 감소합니다. 뷰가 상세하게 렌더링하기에 충분할 때 메인 텍스처가 여전히 사용되지만, 렌더러는 텍스처를 멀리서 또는 작은 크기로 볼 때 적절한 밉맵 이미지 (…)로 전환합니다.
비록 이것이 “먼 거리에서 볼 때”를 언급하는 것처럼 3D 그래픽을위한 기술로 설명되었지만, 2D에도 적용됩니다 ( “그린 공간은 더 작은 공간”, 즉 “다운 스케일”로 번역됨).
구체적인 Android 예제의 경우 특정 배경 드로어 블 (특히 a BitmapDrawable
) 이있는보기가 있다고 가정하십시오 . 이제 애니메이션을 사용하여 원래 크기의 0.15로 조정합니다. 일반적으로 각 프레임마다 배경 비트 맵을 축소해야합니다. 그러나이 “익스트림”다운 스케일링은 시각적 아티팩트를 생성 할 수 있습니다.
그러나 밉맵을 제공 할 수 있습니다. 즉, 이미지가 몇 가지 특정 배율 (1.0, 0.5 및 0.25)로 이미 사전 렌더링되었음을 의미합니다. 애니메이션이 원래의 1.0 크기 이미지를 계속 축소하는 대신 0.5 임계 값을 “교차”할 때마다 0.5 이미지로 전환하고 축소하여 더 나은 결과를 제공합니다. 그리고 애니메이션이 계속되는 것처럼.
이것은 렌더러가 실제로 수행하기 때문에 약간 이론적입니다. Bitmap 클래스의 출처에 따르면 힌트 일 뿐이며 렌더러가이를 존중할 수도 있고 그렇지 않을 수도 있습니다.
/**
* 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);
}
그래도 이것이 왜 응용 프로그램 아이콘에 적합한 지 잘 모르겠습니다. 태블릿의 Android 및 일부 실행기 (예 : GEL)가 아이콘을 더 크게 표시하기 위해 “한 밀도 더 높은”아이콘을 요청하지만 이는 일반적인 메커니즘 (예 drawable-xxxhdpi
: & c)을 사용하여 수행됩니다 .
답변
다른 스레드에서 언급 할만한 한 가지는 다른 밀도에 대해 다른 버전의 앱을 빌드하는 경우 “mipmap”리소스 디렉토리에 대해 알아야합니다. 이것은 다른 apk 대상을 만들 때 밀도 제거에 참여하지 않는다는 점을 제외하고는 “드로어 블”리소스와 정확히 같습니다.
https://plus.google.com/105051985738280261832/posts/QTA9McYan1L
답변
알림 아이콘의 올바른 유형을 결정하기 위해 이에 대한 명확한 답변을 찾고 있었 으므로이 명확한 진술을 주제에 추가하고 싶습니다. http://developer.android.com/tools/help/image-asset-studio.html#saving 에서 가져 왔습니다.
참고 : 실행기 아이콘 파일은 다른 아이콘과 다른 위치에 있습니다. 그것들은 mipmap / 폴더에 있습니다. 다른 모든 아이콘 파일은 프로젝트 의 drawable / 폴더 에 있습니다.
답변
밀도가 다른 별도의 APK를 만들면 다른 밀도의 드로어 블 폴더가 제거됩니다. 이렇게하면 밀도가 높은 실행기 아이콘을 사용하는 장치에서 아이콘이 흐릿하게 나타납니다. 밉맵 폴더는 제거되지 않으므로 실행기 아이콘을 포함하는 데 항상 사용하는 것이 가장 좋습니다.