Как управлять размерами для экранов 800*480 с пользовательскими плотностями?
Требуется поддержка нескольких дисплеев с разрешением 800*480 и несколькими настраиваемыми значениями dpi 240, 213, 210, 220.
Есть ли способ создать различные папки значений, чтобы сохранить размеры в XML? Написал код для проверки отображаемой информации и получил странные результаты журналов на устройствах с (длинной, нормальной) отображаемой информацией. Fe:
информация 213 точек на дюйм
[Приложение:onCreate:164]: SCREENLAYOUT_SIZE_NORMAL, [Приложение:onCreate:181]: SCREENLAYOUT_LONG_YES,[Приложение:onCreate:201]: dpiClassification: 213, xDpi: 213.0, yDpi: 213.0
еще один запуск
[Приложение:onCreate:164]: SCREENLAYOUT_SIZE_NORMAL, [Приложение:onCreate:178]: SCREENLAYOUT_LONG_NO, [Приложение:onCreate:201]: dpiClassification: 213, xDpi: 213.0, yDpi: 213.0
или для 240 точек на дюйм
[Приложение:onCreate:164]: SCREENLAYOUT_SIZE_NORMAL, [Приложение:onCreate:178]: SCREENLAYOUT_LONG_NO, [Приложение:onCreate:201]: dpiClassification: 240, xDpi: 240.0, yDpi: 240.0
и следующий запуск
[Приложение:onCreate:164]: SCREENLAYOUT_SIZE_NORMAL, [Приложение:onCreate:181]: SCREENLAYOUT_LONG_YES,[Приложение:onCreate:201]: dpiClassification: 240, xDpi: 240.0, yDpi: 240.0
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
switch(screenSize) {
case Configuration.SCREENLAYOUT_SIZE_LARGE:
Logger.e("SCREENLAYOUT_SIZE_LARGE");
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
Logger.e("SCREENLAYOUT_SIZE_NORMAL");
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
Logger.e("SCREENLAYOUT_SIZE_SMALL");
break;
default:
Logger.e("default screen size+: "+screenSize);
}
int screenLong = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_LONG_MASK;
switch(screenLong) {
case Configuration.SCREENLAYOUT_LONG_NO:
Logger.e("SCREENLAYOUT_LONG_NO");
break;
case Configuration.SCREENLAYOUT_LONG_YES:
Logger.e("SCREENLAYOUT_LONG_YES");
break;
case Configuration.SCREENLAYOUT_LONG_UNDEFINED:
Logger.e("SCREENLAYOUT_LONG_UNDEFINED");
break;
default:
Logger.e("screenLong : "+screenLong);
}
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);
int dpiClassification = dm.densityDpi;
float xDpi = dm.xdpi;
float yDpi = dm.ydpi;
Logger.e("dpiClassification: "+dpiClassification+", xDpi: "+xDpi+", yDpi: "+yDpi);