Разница в размере растрового изображения для устройств с одинаковой плотностью, дюймами и разрешением
У меня есть два планшетных устройства:
1) планшет Asus Memo Pad 172V
Спецификации приведены онлайн как: 600 * 1024 пикселей, 7,0 дюймов (плотность пикселей ~170 ppi)
Спецификации через код: 1024 * 552 пикселей, 7,0 дюймов (плотность пикселей 160 ppi)
2) планшет MID 7510
Спецификации приведены в Интернете: 800 * 480 пикселей, 7,0 дюйма (нигде не упоминается плотность) ССЫЛКА
Спецификации через код: 1024 * 552 пикселей, 7,0 дюймов (плотность пикселей 160 ppi)
Моя проблема:
- Оба планшета имеют одинаковую плотность и разрешение (по коду), так как я могу различить их, чтобы установить высоту растрового изображения (ширина подходит для обоих), как в случае MID7510
высота растрового изображения слегка увеличивается.
- Есть ли какие-либо другие факторы, которые вызывают разный размер растрового изображения для обоих
таблетки?
- Почему спецификации различаются по коду и даются по-разному в Интернете?
Код для получения плотности и разрешения:
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
int screenHeight = dm.heightPixels;
// Display device dpi (density) value in pixels
int screenDPIy = (int)dm.ydpi;
2 ответа
Диаграмма была на drawable-hdpi
папка.
Я делал просто это:
img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
Высота была неправильной в MID 7510 при этом.
Установка высоты, как это работает для обоих планшетов:
static int imgHeight = 0;
Drawable d = (BitmapDrawable) getResources().getDrawable(R.drawable.chart);
imgHeight = d.getIntrinsicHeight();
final ImageView img = new ImageView(getActivity());
img.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int) (imgHeight * 1.5)));
Это потому, что 1 HDDP = 1,5 MDI. Таким образом, общая высота должна быть в 1,5 раза больше высоты изображения.
Я постараюсь ответить на каждый вопрос, но начну с более важного:
- Почему спецификации различаются по коду и даются по-разному в Интернете?
Поскольку в Интернете вы обнаружите, какой материал используется для устройства, его обычно правильные значения. Вы можете найти по спецификациям кода, которые устанавливаются конструктором при создании версии Android для своих устройств. Значение: это может быть ложным! особенно для устройств от неизвестного конструктора или китайских недорогих устройств, таких как "weisung".
Учитывая это, ответы на другие вопросы:
- Есть ли какие-либо другие факторы, которые вызывают разный размер растрового изображения для обоих планшетов?
Я не думаю, что у них разный размер и плотность экрана, но система думает, что они одинаковы... это объясняет разницу в конечном размере растрового изображения.
- Как я могу отличить их?
Определенно не из характеристик экрана. Если вам действительно нужно управлять устройствами weisung, вы всегда можете проверить производителя в конфигурации устройства по коду. (Предполагая, что они правильно настроили свою идентификацию в поле производителя XD)
Проверьте постоянное значение: android.os.Build.MANUFACTURER
Мне действительно интересно узнать больше в этой теме, поэтому любая дополнительная информация приветствуется.