Разница в размере растрового изображения для устройств с одинаковой плотностью, дюймами и разрешением

У меня есть два планшетных устройства:

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

Мне действительно интересно узнать больше в этой теме, поэтому любая дополнительная информация приветствуется.

Другие вопросы по тегам