짧은 문제안드로이드 : DisplayMetrics densityDpi이
DisplayMetrics.densityDpi은 뿌리 장치에서 제로 것 같다 뿌리 장치에 0을 반환합니다.
내 응용 프로그램에서 다음 코드를 사용하고
긴 문제 : 내가 런타임 및 규모 아이콘 중 내 응용 프로그램에 의해 만들어지고 아이콘을 확장하려면이 옵션을 사용
public static int getIconSize(Activity activity) {
int size;
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_TV:
size = 64;
break;
case DisplayMetrics.DENSITY_HIGH:
size = 72;
break;
case DisplayMetrics.DENSITY_XHIGH:
size = 96;
break;
case DisplayMetrics.DENSITY_400:
size = 120;
break;
case DisplayMetrics.DENSITY_XXHIGH:
size = 144;
break;
case DisplayMetrics.DENSITY_560:
size = 168;
break;
case DisplayMetrics.DENSITY_XXXHIGH:
size = 192;
break;
default:
size = (int) (metrics.densityDpi * (3/10));
}
return size;
}
내가 다른 응용 프로그램에서 얻을 , 그들은 항상 적당한 크기가 아니기 때문에.
위대한 작품이지만 (일부) 루팅 된 장치에서는 실패한 것 같습니다. 크기는 0으로 반환되므로 코드에서 metrics.densityDpi가 0이어야한다고 결론을 내릴 수 있습니다. (나는 이것을 테스트하기 위해 뿌리깊은 전화가 없다)
나는 매니 페스트의 <supports-screens>
섹션을 들여다 보았지만, 필자가 필요로하는 것은 디폴트 값처럼 보인다.
누구에게 이런 일이 일어나는 이유와 수정 사항을 알고 있습니까?
은 뿌리 전화가 항상 densityDpi의 값을 반환하지 않는 것처럼
240320 해상도의 Genymotion 에뮬레이터에서이 문제가 발생했을 때 '밀도'를 사용하면 효과적이었습니다. – Sam