2013-01-25 2 views
0

내가 그것을 동적으로 바로 가기 아이콘을 생성합니다. 바로 가기를 생성하는 응용 프로그램을 가지고, 그래서 올바른 런처 아이콘 크기를 알아야합니다.안드로이드 10 "xhdpi 태블릿 런처 아이콘 크기

이를 처리하기 위해, 나는 values-ldpi/mdpi/hdpi/xhdpi/xxhdpidimens.xml을 생성 내 아이콘 크기를 각각 36/48/72/96/144px로 정의했습니다.

10 ", xhdpi 태블릿 (넥서스 10과 같은)을 제외하고이 구성표는 작동합니다. 이 태블릿은 xhdpi 화면이 있어도 실행 파일 아이콘 크기가 144px (xxhdpi) 인 것으로 보입니다.

정확하게 10 "xhdpi 태블릿을 고려한 실행기 아이콘 크기를 감지하는 방법이 있습니까? 아니면 정확하게 크기가 조정 된 아이콘을 더 잘 구성 할 수있는 방법이 있습니까? 아니면이 사례를 단순한 것과 구분할 수있는 방법이 있습니까? xhdpi 경우? 내 자신의 질문에 대답

감사합니다.

+0

이야 - 네, 구글이 언급,이기는하지만 비공식 채널을 통해 : HTTPS : //plus.google.com/118292708268361843293/posts/ePQya3KsTjW 아마도 Nick이 G + 게시물에서 언급 한 것처럼'ActivityManager'의'getLauncherLargeIconDensity()'가 도움이 될 것입니다. – CommonsWare

+0

관심이 있으시면 http://stackoverflow.com/questions/13215587/android-xxhdpi-resources에서 Nexus 10이 XXHDPI 리소스를 사용하는 이유에 대해 살펴보십시오. – Eric

+0

@CommonsWare는 대답을 (getLauncherLargeIconDensity())로 게시하여주십시오. –

답변

1

. CommonsWare에 의해 제안

런처 아이콘 크기를 얻으려면, 단순히 ActivityManager.getLauncherLargeIconSize()를 호출 위. 한 약간의 딸꾹질이 API 11에서만 사용할 수 있다는 것입니다 +.이 경우 DisplayMetrics을 사용하십시오. 안드로이드 2를 돌리는 10 인치 XHDPI 장치가 있다면 (물론 안드로이드 2에 X * HDPI가 존재하지 않았기 때문에) 거의 불가능합니다. 여기의 "xhdpi 화면을에도 불구하고는 이러한 정제 144px (xxhdpi)의 런처 아이콘 크기를 사용 나타납니다"내가 쓴 유틸리티 메소드,

@SuppressLint("NewApi") 
private int getLauncherIconSize() { 
    int size = 48; 

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
     ActivityManager mgr = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE); 
     size = mgr.getLauncherLargeIconSize(); 
    } else { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     switch (metrics.densityDpi) { 
     case DisplayMetrics.DENSITY_LOW: 
      size = 36; 
      break; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      size = 48; 
      break; 
     case DisplayMetrics.DENSITY_HIGH: 
      size = 72; 
      break; 
     case DisplayMetrics.DENSITY_XHIGH: 
      size = 96; 
      break; 
     case DisplayMetrics.DENSITY_XXHIGH: 
      size = 144; 
      break; 
     } 
    } 

    return size; 
}